将列表的每三个元素乘以2

akr*_*ich 0 python iteration collections list-comprehension list

输入数据:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
输出数据:[1, 2, 6, 4, 5, 12, 7, 8, 18, 10]

我读了很多答案,建议在其中使用包含第一个元素的切片符号。但就我而言,我应该将列表的每个第3个元素都包含在内。

有可能提高我的认识吗?

for index in range(len(data)):
    if (index + 1) % 3 == 0:
        data[index] = data[index] * 2
Run Code Online (Sandbox Code Playgroud)

Blo*_*ard 9

是的,您可以使用切片符号来实现:

data[2::3] = [x*2 for x in data[2::3]]
Run Code Online (Sandbox Code Playgroud)

data[2::3]装置的每个第三元件开始于元素索引2(即第三元素)。您也可以重新分配给切片,以使用这种非常简洁的语法。

  • 您可以通过执行`data [2 :: 3] =(x * 2 for data [2 :: 3]中的x来改善此问题)。这使用了生成器,并且避免了创建临时列表。 (3认同)