我想做以下事情:
L = [(1,2),(3,4),(5,6)]
new_list = list( element in L for i,j in L if i >1 and j >4)
new_list
的结果为[(5,6)]
我知道如何为1-d列表执行此操作,例如:
L1 = [1,2,3,4]
new_L1 = list( i for i in L1 if i>1 )
但是我不知道如何在python中为多维列表做类似的事情。
答案 0 :(得分:1)
你可以正常迭代元组:
new_l = [tup for tup in L if tup[0] > 1 and tup[1] > 4]
答案 1 :(得分:1)
您可以将嵌套元组解压缩到主循环中所需的变量中:
[(i, j) for i, j in L if i > 1 and j > 4]
请注意,您必须重建'左侧表达式中的原始元组。
或者,使用索引来处理元素:
[elem for elem in L if elem[0] > 1 and elem[1] > 4]
请注意,我在这里使用了list comprehension(您在list()
函数中使用了生成器表达式,从而以不太有效的方式获得了类似的结果。)< / p>