リストで選択した要素の左右の合計を比較する方法はありますか? 例えば:
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:])
個々のリストを保存せずに合計を取得して、最後の 2 行を結合したことに注意してください。
left
次に、必要に応じて比較できright
ます。
partition
入力に使用できる単一の値である a がある場合split
、- askewchan の回答に似ていますが、任意の iterable を使用でき、インデックスを作成できる必要があるものではありません (これは の乱用であることに注意してください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)