繁体   English   中英

Python多循环

[英]Python multiple loops

A = [[[1,2,3],[4]],[[1,4],[2,3]]]

在这里,我要查找A中的列表,列表中所有子列表的总和不大于5。

结果应该是[[1,4],[2,3]]

我花了很长时间解决python中的这个问题。 但是我仍然想不出正确的解决方案,我坚持将其循环出多个循环。 我的代码如下,但其明显错误,如何纠正?

A = [[[1,2,3],[4]],[[1,4],[2,3]]]
z = []
for l in A:
    for list in l:
        sum = 0
        while sum < 5:
            for i in list:
                sum+=i
        else:
            break
    else:
        z.append(l)
print z

寻求帮助〜

单行式@KindStranger方法的简化:

>> [sub for x in A for sub in x if max(sum(sub) for sub in x) <= 5]
[[1, 4], [2, 3]]

这应该可以解决您的问题:

>>> for alist in A:
...     if max(sum(sublist) for sublist in alist) <= 5:
...         print(alist)
...
[[1, 4], [2, 3]]

您可以想到的一个简单的解决方案是这样的-

A = [[[1,2,3],[4]],[[1,4],[2,3]]]

r = []   # this will be our result

for list in A:  # Iterate through each item in A
    f = True    # This is a flag we set for a favorable sublist
    for item in list:  # Here we iterate through each list in the sublist
        if sum(item) > 5:  # If the sum is greater than 5 in any of them, set flag to false
            f = False
    if f:       # If the flag is set, it means this is a favorable sublist
        r.append(list)

print r

但是我假设嵌套级别是相同的。 http://ideone.com/hhr9uq

all()

[t for item in A for t in item if all(sum(t)<=5 for t in item)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM