我有一个数字列表t。我想将列表中的数字乘以10.为什么这不起作用?:
for i in t
i = i*10
为什么我必须这样做?:
for i in range(len(t)):
t[i] = t[i]*10
答案 0 :(得分:1)
嗯,它不起作用,因为它没有正确的语法。但是,您可以使用列表解析来清理一些事情:
t = [x * 10 for x in t]
答案 1 :(得分:0)
它在Python中不起作用。
i
构造的索引变量(for .. in
)只是一个变量。在每次循环开始时,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”):
如果LIST的任何元素是左值,您可以通过修改循环内的VAR来修改它。相反,如果LIST的任何元素不是左值,则任何修改该元素的尝试都将失败。换句话说,foreach循环索引变量是您循环的列表中每个项目的隐式别名。
所以:
perl -e '@t = (1, 2, 3); foreach $i (@t) { $i = 1; } print @t'
111