對於像一些數據:如何正確使用Python3地圖?
foo = list()
foo.append(["a", "b", "c"])
foo.append(["d", "e", "f"])
foo.append(["g", "h", "i"])
我可以使用map(shuffle, foo)
的Python 2洗牌FOO的每個子表,並取回從地圖列表。
Python 3 map(與許多其他方法一樣)返回一個對象,在這種情況下是一個包含某個帶有值的迭代器的映射對象(至少這是我認爲的)。
於是,我就一個列表理解:
[ element for element in map(shuffle, foo) ]
而且列表構造:
list(map(shuffle, foo))
除了作爲一個簡單的for循環:
for element in map(shuffle, foo)
但我總是得到這個東西:
[None, None, None]
我不明白爲什麼?有人可以幫我減輕這個負擔嗎?
除此之外,另一個奇怪的事情:
# simply calling map
map(shuffle, foo) # <-- does nothing, foo's elements remain in the same order
# saving the output
someThing = map(shuffle, foo) # <-- foo's elements are shuffled
爲什麼做的第一件事不要洗牌Foo的元素,但第二個呢?
好的,謝謝。我可以以某種方式對列表foo進行洗牌,而不是最終得到幾行代碼或像rightfolds回答中的新方法my_shuffle? – daniel451 2014-12-07 00:39:22
@ascenator請參閱編輯。使用顯示的列表理解而不將結果列表分配給任何東西。 – skrrgwasme 2014-12-07 00:51:42
謝謝,這解決了問題:) – daniel451 2014-12-07 00:56:27