如何根据特定列值从二维列表中删除行?

skv*_*tss 2 python multidimensional-array python-3.x

例如我们有这个二维列表:

list1 = [['tom',67,'engineer',2],
     ['ron',42,'scientist',4],
      ['alie',56,'doctor',3],
      ['rambo',29,'lawyer',7]]
Run Code Online (Sandbox Code Playgroud)

现在我必须删除第 4 列具有奇数值的行。python3 有什么办法可以使用pop其他方法来做到这一点吗?

Tom*_*zes 5

创建新列表的最简单方法是list1. list1如果您想替换它,可以将其指定给。您可以使用:

list2 = [v for v in list1 if v[3] % 2 == 0]
Run Code Online (Sandbox Code Playgroud)

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

[['tom', 67, 'engineer', 2],
 ['ron', 42, 'scientist', 4]]
Run Code Online (Sandbox Code Playgroud)

如果您只想替换list1为新列表,可以直接这样做:

list1 = [v for v in list1 if v[3] % 2 == 0]
Run Code Online (Sandbox Code Playgroud)

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

list1[:] = [v for v in list1 if v[3] % 2 == 0]
Run Code Online (Sandbox Code Playgroud)