0
what does *c mean in python IE:a,b,*c,d
would someone please explain what does the * do when it is just in front of a object? d ={10: "x",1:"wx",2:"yz"} a = d.setdefault(1) b = d.setdefault(3) s = "{}"*len(d) print(s.format(*d))
3 Answers
+ 2
1. Multiplication:
>>> 3*4
12
>>> "a"*4
'aaaa'
2. "Greedy" arguments collector:
>>> (a, *b, c) = [1, 2, 3, 4, 5]
>>> a
1
>>> b
[2, 3, 4]
>>> c
5
You see, first and last variables took first and last list members. *b - takes all that were not taken.
As per https://stackoverflow.com/questions/400739/what-does-asterisk-mean-in-JUMP_LINK__&&__python__&&__JUMP_LINK:
If the form *identifier is present, it is initialized to a tuple receiving any excess positional parameters, defaulting to the empty tuple. If the form **identifier is present, it is initialized to a new dictionary receiving any excess keyword arguments, defaulting to a new empty dictionary.
3. Specifically when dealing with dictionaries, * takes a sequense of its keys:
>>> x = {'a':1, 'b':2, 'c':3}
>>> print(*x)
a b c
+ 2
d=[1,2,3,4]
print(*d)
* is unwrapping the list...and printing...
+ 2
here its unwrapping dict