对编码相当陌生,我有一个关于列表和子集的问题。 假设这是我的列表:
list =
[[[a,2], [c,3], [e,3]],
[[g,4], [i,4] [k,3]],
[[b,3], [d,2], [f,2]]]
我将如何制作一个专注于索引 -1 (或数字)的新列表来将它们相加,如果总和超过 8 则不打印到新列表中,如果是少打印。
例如:
[a,2], [c,3],[e,3]
sum 是 8,所以它会打印
[g,4],[i,4],[k,3]
sum 是 11,所以它不会打印
[b,3], [d,2], [f,2]
sum 是 7,所以它会打印
这个列表也将是更大,所以我想可能是一个循环,但不知道,任何建议都会有所帮助,谢谢
new_list = []
i = 0
while i < 10:
if (list[i][0][-1] + list[i][1][-1] + list[i][2][2] < 8)
print (list[i] in new_list) #dont think this is right
i = i + 1
return
我以为这会再次循环,但得到了 3 行错误
可以使用列表推导来做到这一点:
list_ = [
[['a',2], ['c',3], ['e',3]],
[['g',4], ['i',4], ['k',3]],
[['b',3], ['d',2], ['f',2]]
]
new_list = [sublist for sublist in list_ if sum(item[-1] for item in sublist) <= 8]
print(new_list)
这将:
-
遍历
list_
中的每个子列表。 -
对于每个子列表,它使用列表推导
[item[-1] for item in sublist]
来提取每个子列表中每个项目的最后一个元素(数字)。 -
使用
sum()
函数对这些数字求和。 -
如果总和小于或等于 8,则将原始子列表包含在
new_list
中。
这将提供以下输出,这正是想要的:
[[['a', 2], ['c', 3], ['e', 3]], [['b', 3], ['d', 2], ['f', 2]]]
标签:python,python-3.x,list,subset
From: 78796157