当下一个整数是相同的值时,求和整数列表

ALA*_*LAN 0 python integer sum

所以我需要一个代码来检查一个整数,并检查它之后的整数是否是相同的值.如果是这样,它会将值添加到x.

input1 = [int(i) for i in str(1234441122)]
x= 0
Run Code Online (Sandbox Code Playgroud)

所以我的代码目前给出了结果[1, 2, 3, 4, 4, 4, 1, 1 ,2 ,2].我希望它能给出结果x = 0+4+4+1+2.我不知道有什么方法可以做到这一点.

sch*_*ggl 8

以下将有效.将相邻对拉链在一起,只有第一个元素与第二个元素相同时才取出它们:

>>> lst = [1, 2, 3, 4, 4, 4, 1, 1, 2, 2]
>>> sum(x for x, y in zip(lst, lst[1:]) if x == y)
11
Run Code Online (Sandbox Code Playgroud)

虽然这在理论上应该稍微有点空间(因为切片创建了一个额外的列表),但它仍然具有O(N)时间和空间的复杂性,并且比基于索引访问的大多数解决方案更具可读性.避免切片同时仍然简洁并避免任何导入的一种棘手的方法是:

>>> sum((lst[i] == lst[i-1]) * lst[i] for i in range(1, len(lst)))  # Py2: xrange
11
Run Code Online (Sandbox Code Playgroud)

这利用了lst[i]==lst[i-1]将被投射01适当的事实.