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

2024-10-03 21:30:25 发布

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

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

知道列表不能像数组那样被索引,我怎么能在这里得到类似的功能呢


Tags: 项目in列表forif数组itemrow
2条回答

你提出的第一个方法对我很有效

要使第二种方法起作用,需要对其进行如下修订:

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]

相关问题 更多 >