例如,我想獲得列表的副本,其中list[0] = 100
。如何返回list [i]在Python中被修改的列表的副本?
l = [9, 2, 5]
#I want to get [100, 2, 5]
我寫了這段代碼,但它不起作用(發生錯誤)。
l = [9, 2, 5]
output = (lambda x: x[0]=100)(mylist[:])
#I want to get [100, 2, 5]
任何Pythonic的方式請。
謝謝。
例如,我想獲得列表的副本,其中list[0] = 100
。如何返回list [i]在Python中被修改的列表的副本?
l = [9, 2, 5]
#I want to get [100, 2, 5]
我寫了這段代碼,但它不起作用(發生錯誤)。
l = [9, 2, 5]
output = (lambda x: x[0]=100)(mylist[:])
#I want to get [100, 2, 5]
任何Pythonic的方式請。
謝謝。
copy_list = l[:]
copy_list[0] = 100
print copy_list # [100, 2, 5]
如何簡單地
output = [100] + l[1:]
這可以概括爲任何指數i
像這樣:
output = l[:i] + [100] + l[i+1:]
要完全回答你的問題,你需要的是一個功能有點像這個:
def modifylist(original, index, value):
return original[:i] + [value] + original[i+1:]
示例(從提問):
l = [9, 2, 5]
output = modifylist(l, 0, 100)
print(output)
輸出...
>>> [100, 2, 5]
L = [9, 2, 5]
output = [100 if i == 0 else x for i, x in enumerate(L)]
這並不適用於指定例如工作,因爲當列表切片它返回一個整數作爲它只有3個項目 - 而Python不會讓你將一個列表和一個整數加在一起。即使明確地聲明切片爲列表也會得到''int'對象不可迭代'。 –
@AlexThornton:我不確定你的意思。該代碼當然適用於'l = [9,2,5]'(我已經測試過了)。 – NPE
我的錯誤是,我在'l [i + 1:]'中的'1'後面做了noob錯誤。 :) –