列表 2 个元素乘以 2 个元素的总和

Sum of a list 2 elements by 2 elements

我有一个包含 25 个元素的列表,例如

tab=[6, 5, 5, 6, 3, 3, 2, 3, 2, 5, 6, 3, 2, 4, 5, 6, 4, 2, 1, 3, 1, 1, 4, 1, 5]

而且我想创建一个新列表 tab1,它会两两显示列表元素的总和,如果列表是奇数,我就不必计算最后一个元素的总和。 它必须通过 for 循环来完成...有什么想法吗? 任何帮助,将不胜感激。 我在我这边试过但没有成功。

我试过这个:

for i in tab:
print(sum(i:len(tab))

它给我一个语法错误,我尝试了一些其他的东西但没有用...

我也试过了

for i in tab:
print(sum(i,i+1))

也没用

当我这样做时

sum=0
for i in tab:
print(sum(tab[i]+tab[i+1]))

它返回给我:TypeError: 'int' object is not callable

您可以使用 2 步遍历列表。

orig_len = len(tab)  # List length
tab1 = []
for i in range(0, orig_len - orig_len%2, 2):
  tab1.append(tab[i] + tab[i+1])
print(tab1)

您必须将数字向下舍入到第一个更小的偶数,orig_len - orig_len%2 就是这样做的。

试试这个:

tab=[6, 5, 5, 6, 3, 3, 2, 3, 2, 5, 6, 3, 2, 4, 5, 6, 4, 2, 1, 3, 1, 1, 4, 1, 5]
print([sum(tab[i:i+2]) for i in range(0, len(tab),2)])

输出将是:

[11, 11, 6, 5, 7, 9, 6, 11, 6, 4, 2, 5, 5]

这可以通过以下方式实现:

tab = [6, 5, 5, 6, 3, 3, 2, 3, 2, 5, 6, 3, 2, 4, 5, 6, 4, 2, 1, 3, 1, 1, 4, 1, 5]
tab1 = []
initial_pos = 0

for i in range(2, len(tab), 2):
    tab1.append(sum(tab[initial_pos:i]))
    initial_pos = I

    if i == len(tab) - 2:
        tab1.append(sum(tab[i:]))

这里发生的事情是我们从第三个元素开始遍历 tab 并对切片 tab[0:2] 的元素值求和,然后 initial_pos 将假定值2 和我的值 4,所以在下一次迭代中我们将追加 sum(tab[2:4]) 到 tab1 等等。

if 语句确保这适用于奇数列表和偶数列表。