+ 1
print(*(animals.get(i) for i in x))
hei guys. could you briefly explain me the function of the asterix in the print line of the below code please? Removing it results in the following output: "<generator object <genexpr> at 0x7f81bc9603c0>" ### animals = {"Meow": "Lion", "Woof": "Dog", "Kwak": "Duck", "Tweet": "Bird"} x = input().split() print(*(animals.get(i) for i in x)) ###
2 Answers
+ 4
(animals.get(i) for i in x) is a generator expression. Think of it as something between a list comprehension and lambda iterator. It yields results.
for example, if you input
Meow Tweet Woof
it will output
Lion Bird Dog
the results are not evaluated immediately. you can use next to yield them one by one, or you can use * to unpack them in one step.
similarly,you can unpack the keys using
print(*(animals.get(i) for i in animals.keys()))
which works like
for i in animals.keys():
print(animals.get(i))
https://dbader.org/blog/JUMP_LINK__&&__python__&&__JUMP_LINK-generator-expressions#:~:text=Generator%20expressions%20are%20similar%20to,t%20be%20restarted%20or%20reused.
+ 2
Decent breakdown there. Thank you!