为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

四季花海 2021-07-12 16:08:01
我是一个正在学习用 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 位数字进行比较?先感谢您
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

您可以使用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 

更新


对于嵌套列表,您可以使用列表理解:


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


查看完整回答
反对 回复 2021-07-21
?
阿晨1998

TA贡献2037条经验 获得超6个赞

你可以用下面的列表理解来做到这一点


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


查看完整回答
反对 回复 2021-07-21
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

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


查看完整回答
反对 回复 2021-07-21
  • 3 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信