2016-12-01 107 views
1

我有一個數字列表t。我想用10乘以該列表中的號碼爲什麼這個不行?:乘以10的數字列表

for i in t 
    i = i*10 

我爲什麼要做這個?:

for i in range(len(t)): 
    t[i] = t[i]*10 
+1

你是從每次循環迭代列表覆蓋每個號碼的副本。在這種情況下不會修改初始列表 – RomanPerekhrest

+0

[如何將列表中的所有整數相乘]可能的重複(http://stackoverflow.com/questions/26446338/how-to-multiply-all-integers-inside-list ) – RomanPerekhrest

回答

1

好了,這是行不通的,因爲這不是正確的語法。然而,你可以通過列表理解清理一些東西:

t = [x * 10 for x in t] 
0

它在Python中不起作用。

for .. in構造的索引變量(您的i)只是一個變量。在每次循環開始時,Python將in序列中的相應值分配給循環的索引變量。就好像您有很多循環體的副本,並且在每個副本之前,您都會輸入一個賦值語句i = t[0]i = t[1]等等。索引變量不記得它是從in序列(您的t)分配的。索引變量不是in序列的相應值的等效名稱(「別名」)。更改索引變量不會影響in序列。

python -c 't = [1, 2, 3] 
for i in t: 
    i = 1 
print t' 
[1, 2, 3] 

但是你不知道它是否是別名!是經常使用Python相比,另一種語言做工作的方式(報價手冊「perlsyn」):

如果列表的任何元素是左值,你可以通過修改環路內VAR修改。相反,如果LIST的任何元素不是左值,則任何修改該元素的嘗試都將失敗。換句話說,foreach循環索引變量是您正在循環的列表中每個項目的隱式別名。

所以:

perl -e '@t = (1, 2, 3); foreach $i (@t) { $i = 1; } print @t' 
111