填充名單上有一個名爲甲板有16個項目在其列表:與價值
deck = range(0,8)*2
我需要創建具有相同的條目數爲甲板名單列表,但最初,他們都設置爲假
說,新的列表的名稱是new_list
如何在不打字的情況下創建此列表錯誤 16次?當我嘗試這個時,我得到索引超出範圍錯誤。
deck = range(0,8)*2
new_list = []
for card in deck:
new_list[card] = False
感謝
填充名單上有一個名爲甲板有16個項目在其列表:與價值
deck = range(0,8)*2
我需要創建具有相同的條目數爲甲板名單列表,但最初,他們都設置爲假
說,新的列表的名稱是new_list
如何在不打字的情況下創建此列表錯誤 16次?當我嘗試這個時,我得到索引超出範圍錯誤。
deck = range(0,8)*2
new_list = []
for card in deck:
new_list[card] = False
感謝
您可以通過乘以多次重複的列表。例如,這將解決你的問題:
>>> [False] * 16
[False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]
您還可以在列表中的多個元素做到這一點,就像這樣:
>>> [1, 2] * 5
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
如果你想確保名單將擴大,因爲你改變了甲板的尺寸,你可以通過長度倍增,像這樣:
deck = range(0, 8) * 2
falses = [False] * len(deck)
你可以閱讀列表操作here的文檔 - 他們是相當方便的像這樣的情況!
只是爲了澄清爲什麼你的IndexError
:
當您創建new_list
變量,它的長度爲0,並且您嘗試訪問的第一個元素,它不存在。
因此,爲了讓列表隨着需要而增長,您可以使用append
方法。那麼你的代碼應該是這個樣子:
deck = range(0,8)*2
new_list = []
for card in deck:
new_list.append(False)
比我快10秒...很好解釋它。知道哪裏出了問題總是很好的。 –
這是一個不錯的解決方案,但要注意,對於「複雜」的類型,得到的名單將有'的*同*對象的N'副本,而不是'ñ -1'副本添加到列表中。 – schlimmchen