有没有办法比较列表中选定元素的左右总和?例如:
li = [2,3,0,9,6]
if selected item is '0', I want to compare sum of 2,3 and 9,6
提前致谢
有没有办法比较列表中选定元素的左右总和?例如:
li = [2,3,0,9,6]
if selected item is '0', I want to compare sum of 2,3 and 9,6
提前致谢
li = [2,3,0,9,6]
如果给您0
(或任何数字):
n = 0
i = li.index(n) # returns the first location of n (0 in your case)
left = li[:i] # gives the left part of the list
right = li[i+1:] # and the right part
lsum = sum(left)
rsum = sum(right)
但是您必须小心,因为.index
返回项目的第一个实例。如果您有多个0
,它将在第一个 0
拆分列表。
如果你得到它的位置,就i
从上面开始,不要搜索。
i = 2
left = sum(li[:i])
right = sum(li[i+1:])
请注意,我已将最后两行合并在一起,取总和而不保存单独的列表。
然后,您可以随意left
比较right
。
如果有一个partition
可以用于split
输入的单个值,那么 - 类似于 askewchan 的答案,但可以采用任意迭代,而不是需要能够索引的值(注意这是对 的滥用lambda
):
li = [2,3,0,9,6]
from itertools import takewhile
print (lambda L=iter(li): sum(takewhile(lambda e: e != 0, L)) == sum(L))()
# False
更明智的方式:
def partitions_equal(iterable, at):
i = iter(iterable)
return sum(iter(i.next, at)) == sum(i)