2017-05-28 32 views
0

私はPython上で一見単純な問題を解決しようとしています。私はリストの最後の3要素を他の整数に更新しようとしています。コードは次のとおりです。Pythonリストが更新されない

list = [0,1,2,3,4] 
for i in xrange(len(list[2:])): 
    list[2:][i] = 44444 

print list 

ただし、リストを印刷すると、それは変わりません。私はデバッガの変更を観察し、私はリストがループ内で更新されないことがわかった。私はGoogleやStack Overflowで他の場所を検索しようとしましたが、どれもこの単純な問題の答えを提供していません。

あなたの意見を聞かせてください。ありがとう。

答えて

2

リストのスライスは新しいリストです。それはオリジナルやそのようなものを参照していません。代わりにlist[2 + i]に割り当ててください。あなたはそれに割り当てない限り、(。あなたが同じように長さを得るために余分なスライスを避けることができます)

list = [0, 1, 2, 3, 4] 
for i in xrange(len(list) - 2): 
    list[2 + i] = 44444 

print list 
0

スライスして、新しいリストを作成します。

>>> values = [0, 1, 2, 3, 4] 
>>> values[-3:] = [4444] * 3 
>>> values 
[0, 1, 4444, 4444, 4444] 
0

for i in xrange(len(list[2:])):を使用することにより、あなたがしていますリストの長さを5から3に減らします。ループは、最初の3つのリスト項目に対してのみ繰り返します。 代わりに次のようなことをすることができます:

a=[0,1,2,3,4,5] 
for i in range(3,len(a)): 
    a[i]=444 
print(a) 
関連する問題