如何对列表中的每个其他数字执行数学运算?

时间:2015-09-12 00:05:43

标签: python list

例如:如何更改

a = [1,2,3,4]

到此:

a = [2,2,6,4]

所以其他所有元素都加倍了吗?

4 个答案:

答案 0 :(得分:4)

如果您想这样做,可以使用切片分配:

>>> a[::2] = [x*2 for x in a[::2]]
>>> a
[2, 2, 6, 4]

答案 1 :(得分:2)

您可以遍历其他所有索引:

for index in range(0, len(your_list), 2):
    your_list[index] *= 2

您也可以使用切片分配来完成,如@mgilson所说:

your_list[::2] = [x*2 for x in your_list[::2]]

虽然这当然更简洁,但对于通过代码阅读的普通人来说,这也可能更令人困惑 - 分配到具有非默认跳过因子的切片并不是非常直观。

答案 2 :(得分:1)

还有另一种方法可以一次采取两个更直观的步骤,比如

for i in range(len(yourList)/2):
    yourList[2*i] = 2*yourList[2*i]

答案 3 :(得分:1)

虽然我确实喜欢其他答案中使用的巧妙技巧,但对于所发生的事情,可能更详细,更少语言的具体解释如下:

for i in range(0, len(a)):   # Iterate through the list
    if i%2 == 0:             # If the remainder of i ÷ 2 is equal to 0...
        a[i] = a[i] * 2      # Change the current element to twice what it was