python - 将列表中的每个其他元素相乘

时间:2014-10-19 15:40:57

标签: python list

我有一个列表,让我们说:list = [6,2,6,2,6,2,6],我希望它创建一个新列表,其中每个其他元素乘以2并且每个其他元素相乘1(保持不变)。 结果应该是:[12,2,12,2,12,2,12]。

def multi():
    res = 0
    for i in lst[0::2]:
        return i * 2 

print(multi)

也许是这样的,但我不知道如何继续前进。我的解决方案怎么样错了?

2 个答案:

答案 0 :(得分:6)

您可以使用切片分配和列表理解:

l = oldlist[:]
l[::2] = [x*2 for x in l[::2]]

你的解决方案是错误的,因为:

  1. 该功能不接受任何参数
  2. res被声明为数字而不是列表
  3. 你的循环无法知道索引
  4. 您返回第一个循环迭代
  5. 与该功能无关,但您实际上并没有致电multi
  6. 这是您的代码,已更正:

    def multi(lst):
        res = list(lst) # Copy the list
        # Iterate through the indexes instead of the elements
        for i in range(len(res)):
            if i % 2 == 0:
                res[i] = res[i]*2 
        return res
    
    print(multi([12,2,12,2,12,2,12]))
    

答案 1 :(得分:2)

您可以使用列表综合和enumerate函数重建列表,如下所示

>>> [item * 2 if index % 2 == 0 else item for index, item in enumerate(lst)]
[12, 2, 12, 2, 12, 2, 12]

enumerate函数在每次迭代中给出iterable和当前项中它们的当前索引。然后我们使用条件

item * 2 if index % 2 == 0 else item

决定要使用的实际值。在此处,if index % 2 == 0将使用item * 2,否则item将按原样使用。