有沒有什麼方法可以比較列表中選定元素的左右兩邊的總和? 例如:在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