我试图计算2d列表的每一行中出现多少个数字,然后返回带有新变量的值。例如,我想返回大于或等于该长度的项目。
下面是我的列表
df = [[2,4,6,7],[3,4,],[2,4,6,8,12,24],[3,5,7,333,450],[4,20]]
我想创建一个新变量,并返回每个大于3的行。
df2 =[[2,4,6,7],[2,4,6,8,12,24],[3,5,7,333,450]]
我想创建一个新变量,并返回每行中恰好有2个元素。
df3 = [[3,4,],[4,20]]
答案 0 :(得分:1)
可能不是最有效的解决方案,而是一种简洁的方法:
df = [[2,4,6,7],[3,4,],[2,4,6,8,12,24],[3,5,7,333,450],[4,20]]
df3 = filter(lambda l: len(l) > 3, df)
df2 = filter(lambda l: len(l) == 2, df)
print(list(df2))
print(list(df3))
输出:
[[3, 4], [4, 20]]
[[2, 4, 6, 7], [2, 4, 6, 8, 12, 24], [3, 5, 7, 333, 450]]
答案 1 :(得分:0)
您可以使用列表推导来执行此操作。在这种情况下,您可以检查每个子列表的len
,并使用它来过滤出要保留/丢弃的子列表。
>>> df = [[2,4,6,7],[3,4,],[2,4,6,8,12,24],[3,5,7,333,450],[4,20]]
>>> [i for i in df if len(i) > 3]
[[2, 4, 6, 7], [2, 4, 6, 8, 12, 24], [3, 5, 7, 333, 450]]
>>> [i for i in df if len(i) == 2]
[[3, 4], [4, 20]]