如何基于特定列值从二维列表中删除行?

2024-04-25 23:05:06 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我们有以下2D列表:

list1 = [['tom',67,'engineer',2],
     ['ron',42,'scientist',4],
      ['alie',56,'doctor',3],
      ['rambo',29,'lawyer',7]]

现在我必须删除第4列中有奇数值的行。python3中有没有任何方法可以使用pop或其他东西来实现这一点


Tags: 方法列表poppython3数值doctortomlist1
2条回答

该解决方案使用remove。你很容易理解

for value in list1[:]:
    if value[3] % 2 != 0:
        list1.remove(value)

结果

[['tom', 67, 'engineer', 2], ['ron', 42, 'scientist', 4]]

最简单的方法是从list1创建一个新列表。如果要替换它,可以将其分配给list1。您可以使用:

list2 = [v for v in list1 if v[3] % 2 == 0]

在您的示例中,list2获取以下值:

[['tom', 67, 'engineer', 2],
 ['ron', 42, 'scientist', 4]]

如果您只想用新列表替换list1,可以直接执行以下操作:

list1 = [v for v in list1 if v[3] % 2 == 0]

如果需要保留对list1的引用,可以使用以下命令更改现有列表:

list1[:] = [v for v in list1 if v[3] % 2 == 0]

相关问题 更多 >