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

时间:2017-12-29 07:20:45

标签: python list compare

我是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

我想要一个list3,它将包含list1的行,这些行的第一个项目与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)

知道列表无法以与数组相同的方式编制索引,如何在此处获得类似的功能?

2 个答案:

答案 0 :(得分:1)

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]

答案 1 :(得分:1)

你提出的第一个方法对我来说很合适。

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

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