是否可以使用特定数字比较 2 个列表之间的列表?



我是一名正在学习使用 python 编程的新学生,我有 2 个示例列表,它们是

selected_ipc = ['H01L']
df = [[ 'F24J3/02 ', 'A123'], [ 'G01N31/10 ', 'A124'], [ 'H01L27/14 ', 'A125'], ['G21H1/10 ', 'A126'], ['H01L21/36 ', 'A127']]

我创建了这样的简单代码

for item in selected_ipc:
for item1 in df:
if item == item1:
print (item)
else:
print("No match")

结果返回"不匹配",而我的预期结果是

[[ 'H01L27/14 ', 'A125'], ['H01L21/36 ', 'A127']]

因此,我想问是否可以将第一个列表与第二个列表中的前 4 位数字进行比较?

提前谢谢你

您可以使用 starts:

selected_ipc = ['H01L']
df = ['F24J3/02 ', 'G01N31/10 ', 'H01L27/14 ', 'G21H1/10 ', 'H01L21/36 ']
for item in selected_ipc:
for item1 in df:
if item1.startswith(item):
print(item1)
else:
print("No match")

输出

No match
No match
H01L27/14 
No match
H01L21/36 

更新

对于嵌套列表,您可以使用列表推导式:

selected_ipc = ['H01L']
df = [['F24J3/02 ', 'A123'], ['G01N31/10 ', 'A124'], ['H01L27/14 ', 'A125'], ['G21H1/10 ', 'A126'],
['H01L21/36 ', 'A127']]
result = [lst for lst in df if any(lst[0].startswith(e) for e in selected_ipc)]
print(result)

输出

[['H01L27/14 ', 'A125'], ['H01L21/36 ', 'A127']]

作为替代方案,您可以使用具有两个循环的不那么python化的方式:

selected_ipc = ['H01L']
df = [['F24J3/02 ', 'A123'], ['G01N31/10 ', 'A124'], ['H01L27/14 ', 'A125'], ['G21H1/10 ', 'A126'],
['H01L21/36 ', 'A127']]
result = []
for lst in df:
found = False
for e in selected_ipc:
if lst[0].startswith(e):
found = True
result.append(lst)
break
if not found:
print("No match")
print(result)

输出

No match
No match
No match
[['H01L27/14 ', 'A125'], ['H01L21/36 ', 'A127']]
selected_ipc = ['H01L']
df = ['F24J3/02 ', 'G01N31/10 ', 'H01L27/14 ', 'G21H1/10 ', 'H01L21/36 ']
l = []
for i in df:
if selected_ipc[0] in i:
l.append(i)
print l

你可以用如下所示的列表推导来做到这一点

selected_ipc = ['H01L']
df = ['F24J3/02 ', 'G01N31/10 ', 'H01L27/14 ', 'G21H1/10 ', 'H01L21/36 ']
for item in selected_ipc:
match_lst = [item1 for item1 in df if item in item1]
print(match_lst)

更新

如果您想检查列表"df"中列表的其他元素(而不是第一个(,则可以查看以下代码

selected_ipc = ['H01L', 'G01N', 'A126']
df = [['F24J3/02 ', 'A123'], ['G01N31/10 ', 'A124'], ['H01L27/14 ', 'A125'], ['G21H1/10 ', 'A126'],
['H01L21/36 ', 'A127']]
match_lst = [item1 for item1 in df if any(i.startswith(item) for item in selected_ipc for i in item1)]
print(match_lst)

输出

[['G01N31/10 ', 'A124'], ['H01L27/14 ', 'A125'], ['G21H1/10 ', 'A126'], ['H01L21/36 ', 'A127']] 

使用列表推导 检查键是否在项目中,如果是,请将其添加到列表中

res = [i for i in df if selected_ipc[0] in i[0]]
# [['H01L27/14 ', 'A125'], ['H01L21/36 ', 'A127']]

最新更新