通过将第一个列表中的第一行项与第二个列表中的项进行比较来创建新列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过将第一个列表中的第一行项与第二个列表中的项进行比较来创建新列表相关的知识,希望对你有一定的参考价值。
我是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)
知道列表不能以与数组相同的方式编制索引,如何在此处获得类似的功能?
答案
你提出的第一个方法对我来说很合适。
要使第二种方法起作用,需要对其进行如下编辑:
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]
以上是关于通过将第一个列表中的第一行项与第二个列表中的项进行比较来创建新列表的主要内容,如果未能解决你的问题,请参考以下文章
将第一个文件的第一列与第二个文件中的行匹配,然后将第二个文件中匹配行的最后一列插入第一个文件中的新第一列