如何计算二维列表中的值

时间:2019-10-09 16:44:29

标签: python

我试图计算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]]

2 个答案:

答案 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]]