當我輸入t=[[False]*2]*2
時,我得到列表[[False, False], [False, False]]
。但是當我輸入t[0][0] = True
時,t[1][0]
也更改爲True
,讓我與[[True, False], [True, False]]
。我只想要[[True, False], [False, False]]
。作爲第二種選擇,我可以分配t=[[False]*2, [False]*2]
,然後更改t[0][0] = True
得到我想要的([[True, False], [False, False]]
),但是我的真實名單比這個大得多,所以我寧願不使用選項2.我認爲這是一個類似的問題到克隆,而使用列表複製,所以我嘗試: ([[False]*2])*2
Python:如何在不克隆的情況下複製複製列表
([False]*2)*2
[[False]*2][:]*2
t = [False]*2 t = t*2
list([False]*2)*2
list([[False]*2])*2
[list([False]*2)]*2
。這些都沒有奏效。有沒有辦法做到這一點,而無需導入任何包?
當然!我在其他地方使用了列表理解,但是我忘記了在這裏使用它。順便說一句,'xrange'在Python 3中不起作用(它只是'range')。但是,如果沒有列表理解,真的沒有辦法做到這一點嗎? –
@ P.Gordy還有'itertools.repeat(val,numberoftimes)',但是列表理解會更快。如果你嵌套'重複',那麼它變得很難看。 – MSeifert
'[範圍(2)中的x的錯誤]'實際上可以是'[False] * 2'。只有第二個人需要在範圍(2)'中有'y'。 –