列表生成子列表我有2個輸入爲:從子表的總和小於給定數量
p = 7
s = [2 2 8 1 3]
我知道如何itertool.combinations
得到基本列表的子集,但要我想要的是連續的子列表,每個子元素的總和小於p
。
所以結果應該是:
[2],[2,2],[2],[1],[1,3],[3]
在這裏我得到了6個這樣的子列表,其中對於每個子列表,sum(sublist) < p
。
列表生成子列表我有2個輸入爲:從子表的總和小於給定數量
p = 7
s = [2 2 8 1 3]
我知道如何itertool.combinations
得到基本列表的子集,但要我想要的是連續的子列表,每個子元素的總和小於p
。
所以結果應該是:
[2],[2,2],[2],[1],[1,3],[3]
在這裏我得到了6個這樣的子列表,其中對於每個子列表,sum(sublist) < p
。
試試這個:
p = 7
s = [2,2,8,1,3]
ans=[]
for i in xrange(len(s)):
for j in xrange(i,len(s)):
if sum(s[i:j+1])<p:
ans.append(s[i:j+1])
print ans
輸出:
[[2], [2, 2], [2], [1], [1, 3], [3]]
中提到它,你可以寫成一個列表理解:在xrange(len(s))中對於i中的i在xrange中爲ans = [s [i:j + 1] (i,len(s))如果sum(s [i:j + 1])
它是否需要按照特定的順序? –
爲什麼不是'[2,2,1]'和'[2,1,3]'列表中的一部分,因爲它們也小於7? –
@MoinuddinQuadri「contiguous」,OP在問題 –