有没有什么方法可以比较列表中选定元素的左右两边的总和? 例如:在Python中查找列表元素左右手的总和
li = [2,3,0,9,6]
if selected item is '0', I want to compare sum of 2,3 and 9,6
在此先感谢
有没有什么方法可以比较列表中选定元素的左右两边的总和? 例如:在Python中查找列表元素左右手的总和
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
。
+1如果0不在列表中,处理异常也很好。 – jurgenreza 2013-03-16 01:52:50
@jurgenreza好的我会说清楚零可以改变。 – askewchan 2013-03-16 01:55:19
如果有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)
是选择真'0'或者是它'的Li [2]'(即,是的值,或在列表中的位置是选择)? – askewchan 2013-03-15 23:28:15
[你有什么尝试?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – Volatility 2013-03-15 23:28:50
左/右如何定义?什么是comp。对于'li = [1,2,1]'? – 2013-03-15 23:37:25