将数字列表乘以10

时间:2016-12-01 19:10:59

标签: python-3.x

我有一个数字列表t。我想将列表中的数字乘以10.为什么这不起作用?:

for i in t
     i = i*10

为什么我必须这样做?:

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

2 个答案:

答案 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
相关问题