Wenn Sie das Map / Zip / Filter-Objekt zweimal auflisten, ist es leer.
list_twice
>>> xs = [1, 2, 3]
>>> mapped = map(lambda x:x+1, xs)
>>> list(mapped)
[2, 3, 4]
>>> list(mapped)
[]
Ich weiß nicht, was zuerst passiert ist, es ist ein Fehler oder eine zerstörerische Methode! ?? Ich dachte, aber es scheint eine Spezifikation zu sein. http://stackoverflow.com/questions/19759247/listing-a-filter-object-twice-will-return-a-blank-list
Ursprünglich war ich süchtig danach, wie folgt zu diktieren.
bad_code
xs = map(func, my_list)
ys = dict(zip([x.key for x in xs], xs))
Es ist ein trauriger Code, den Sie jetzt zurücklesen müssen ... Es spielt keine Rolle, ob er enthalten ist oder nicht, ohne list () zu verwenden. Er verschwindet beim Iterieren. In diesem Fall ist das zweite x der Zip leer. Es war. Deshalb habe ich mich entschlossen, mein Bestes zu geben, um beim Mapping vorsichtig zu sein.
Der obige Code wurde übrigens wie folgt gelöst.
bad_code
xs = map(func, my_list)
ys = {x.key:x for x in xs}
Dank dessen habe ich gelernt, dass in Python3 die Einschlussnotation diktiert und gesetzt ist.
Recommended Posts