如何删除某些特定列值的2D列表中的行?

时间:2016-06-19 05:48:09

标签: python python-3.x

例如,如果我们有2D列表:

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

现在我必须删除第4列有奇数值的行。使用pop或其他东西在python3中有没有办法呢?

2 个答案:

答案 0 :(得分:3)

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]

答案 1 :(得分:0)

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

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

<强>结果

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