我有一个数字列表t。我想用10乘以该列表中的号码为什么这个不行?:乘以10的数字列表
for i in t
i = i*10
我为什么要做这个?:
for i in range(len(t)):
t[i] = t[i]*10
我有一个数字列表t。我想用10乘以该列表中的号码为什么这个不行?:乘以10的数字列表
for i in t
i = i*10
我为什么要做这个?:
for i in range(len(t)):
t[i] = t[i]*10
好了,这是行不通的,因为这不是正确的语法。然而,你可以通过列表理解清理一些东西:
t = [x * 10 for x in t]
它在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
你是从每次循环迭代列表覆盖每个号码的副本。在这种情况下不会修改初始列表 – RomanPerekhrest
[如何将列表中的所有整数相乘]可能的重复(http://stackoverflow.com/questions/26446338/how-to-multiply-all-integers-inside-list ) – RomanPerekhrest