Pour l'objet map / zip / filter, faire la liste deux fois le rendra vide.
list_twice
>>> xs = [1, 2, 3]
>>> mapped = map(lambda x:x+1, xs)
>>> list(mapped)
[2, 3, 4]
>>> list(mapped)
[]
Je ne sais pas ce qui s'est passé au début, c'est un bug, ou c'est une méthode destructrice! ?? J'ai pensé, mais cela semble être une spécification. http://stackoverflow.com/questions/19759247/listing-a-filter-object-twice-will-return-a-blank-list
À l'origine, j'étais accro à faire un dict comme suit.
bad_code
xs = map(func, my_list)
ys = dict(zip([x.key for x in xs], xs))
C'est un code triste à relire maintenant ... Peu importe qu'il soit inclus ou non sans utiliser list (), il disparaît lors de l'itération, donc dans ce cas, le deuxième x du zip est vide. C'était. J'ai donc décidé de faire de mon mieux pour être prudent lors de la cartographie.
À propos, le code ci-dessus a été résolu comme suit.
bad_code
xs = map(func, my_list)
ys = {x.key:x for x in xs}
Grâce à cela, j'ai appris qu'en Python3, la notation d'inclusion correspond à dict et set.
Recommended Posts