获取列表中前两个元素的总和,并将其插入开头

2024-09-28 03:18:24 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个列表[1,2,3,4],我想要的是得到前2对的和,并以这种方式打印它们:

[1,2,3,4]
[3,3,4]
[6,4]
[10]

基本上,它应该继续添加列表的前2个元素,然后删除前2个元素并在开始处插入总和,直到列表只包含1个元素。不过,我无法打印相同的内容,只能得到以下内容:

[1,2,3,4]
[3,3,4]
[3,4]
[3]

以下是我的代码:

counter = len(num_arr)

while (counter > 1):
    valHold = (sum(num_arr[:2]))
    del numArr[:2]
    numArr.reverse()
    numArr.append(valHold)
    numArr.reverse()
    print (numArr)
    counter -= 1

我真不知道该怎么办。非常感谢你!你知道吗


Tags: 代码元素内容列表len方式counternum
3条回答

只需使用切片替换:

num_arr = [1,2,3,4]
while len(num_arr) >= 2:
    num_arr[:2] = [sum(num_arr[:2])]
    print(num_arr)

正如@niemmi在注释中所说的,修复变量名后,代码运行良好。它不会像你发布的那样运行。你知道吗

# test.py

num_arr = [1, 2, 3, 4]
print(num_arr)

counter = len(num_arr)

while (counter > 1):
    valHold = (sum(num_arr[:2]))
    del num_arr[:2]
    num_arr.reverse()
    num_arr.append(valHold)
    num_arr.reverse()
    print (num_arr)
    counter -= 1

$ python test.py
[1, 2, 3, 4]
[3, 3, 4]
[6, 4]
[10]

可以在列表长度大于1时循环并使用slicing

l = [1, 2, 3, 4]
while len(l) > 1:
    l = [l[0] + l[1]] + l[2:]
    print(l)

印刷品:

[3, 3, 4]
[6, 4]
[10]

相关问题 更多 >

    热门问题