請直接指出。列表例如lst = [1, 1, 1, 0, 0, 0]
,現在我想將1更改爲0,作爲lst = [0, 0, 0, 0, 0, 0]
。關於python列表元素和列表解析的一些問題
我的原始溶液下面喜歡:
for item in lst:
if item == 1:
item = 0
實際上,結果列表仍然LST = [1,1,1,0,0,0]。
Q1:除了使用列表理解之外,還有其他解決方案可以解決嗎?
Q2:如何在正確的列表解析時寫入更多的if else for
呢?所以我嘗試了以下四種款式:
No.1 lst = [0 if item == 1 for item in lst] # Returns syntax error
No.2 lst = [0 for item in lst if item == 1] # Returns [0, 0, 0]
No.3 lst = [0 if item == 1 else item for item in lst] # Returns [0, 0, 0, 0, 0, 0]
No.4 lst = [0 for item in lst if item == 1 else item] # Returns syntax error
Python不會提取循環計數器「按值」 - 請參閱我對Mike Lewis的回答的評論。此外,使用列表理解來修改列表項是很容易的:'a = [[],[]]; [x.append(0)for x in a]'。誠然,這不完全是列表理解。 – 2011-03-29 16:26:33
@Sven:這是有價值的。但是在python中的其他地方,這個值是一個參考。如果它是一個可變對象的引用,那麼你當然可以修改它。但重新分配它並不會改變列表中的引用(這就是「...引用」意味着什麼)。是的,你可以隨時修改可變對象,包括列表解析。 – delnan 2011-03-29 17:45:50