通过将第一个列表中的第一行项目与第二个列表中的项目进行比较来创建新列表



我是python的新手,来自Matlab,并且仍在适应使用列表而不是数组。我有两个列表,如果每行中的项目与第二个列表中的任何元素匹配,我正在尝试使用第一个列表中的项目创建第三个列表。从本质上讲,我有

list1 = [['name1',height1,length1],['name2',height2,length2]...['name9',height9,length9]
list2 = ['name1','name9']
list3 = []

并想要类似的东西

for row in list1
if first element (namex) in row is in list2
append row to list 3

我想要一个列表 3,它将包含列表 1 的行,这些行的第一个项目与 list2 中的项目匹配。

list3 = [['name1',height1,lenght1],['name9',height9,length9]]

我尝试了两种不同的方法来执行此操作,但都会导致空白列表3:

list3 = [item for item in list1 if item[0] in list2]

for rows in list1:
if list1[0] in list2:
list3.append(rows)

知道列表不能以与数组相同的方式进行索引,我如何在这里获得类似的功能?

你提出的第一种方法对我来说很好用。

要使第二种方法起作用,需要按如下方式对其进行编辑:

list3 = []
for row in list1:
if row[0] in list2:
list3.append(row)

if检查应使用rows[0]而不是list1[0]

for row in list1:
if row[0] in list2:
list3.append(rows)

这可以浓缩为列表理解。

list3 = [row for row in list1 if row[0] in list2]

相关内容

  • 没有找到相关文章

最新更新