[英]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.