作者:虎仔球妈_459 | 来源:互联网 | 2023-01-06 11:25
所以我需要一个代码来检查一个整数,并检查它之后的整数是否是相同的值.如果是这样,它会将值添加到x
.
input1 = [int(i) for i in str(1234441122)]
x= 0
所以我的代码目前给出了结果[1, 2, 3, 4, 4, 4, 1, 1 ,2 ,2]
.我希望它能给出结果x = 0+4+4+1+2
.我不知道有什么方法可以做到这一点.
1> schwobaseggl..:
以下将有效.将相邻对拉链在一起,只有第一个元素与第二个元素相同时才取出它们:
>>> 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
虽然这在理论上应该稍微有点空间(因为切片创建了一个额外的列表),但它仍然具有O(N)
时间和空间的复杂性,并且比基于索引访问的大多数解决方案更具可读性.避免切片同时仍然简洁并避免任何导入的一种棘手的方法是:
>>> sum((lst[i] == lst[i-1]) * lst[i] for i in range(1, len(lst))) # Py2: xrange
11
这利用了lst[i]==lst[i-1]
将被投射0
或1
适当的事实.