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

2024-09-27 00:11:58 发布

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

我是一个正在学习python编程的新学生,我有两个示例列表,分别是

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位数字进行比较?你知道吗

先谢谢你


Tags: indf列表for编程item学生ipc
3条回答

您可以使用startswith

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 

更新

对于嵌套列表,可以使用list comprehension

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']]

作为一种替代方法,您可以使用带有两个循环的pythonic方式:

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 ']

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']] 
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

相关问题 更多 >

    热门问题