gpt4 book ai didi

python - 在 Python 中查找列表和多个子列表之间的匹配索引

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:00 24 4
gpt4 key购买 nike

针:['', 'yes', 'yes', '', '', '', 'yes', 'yes', 'yes', '']

干草堆:[['', '', 'yes', 'yes', '', '', 'yes', 'yes', '', 'yes'], ['', '', '', '是', '是', '', '', '', '是', '是']]

Needle 在 2、6、7 处与 Haystack[0] 匹配,在 8 处与 Haystack[1] 匹配,我希望能够创建这些索引匹配列表。

目前:我的代码返回 [1,2,6,7,8],但没有告诉我匹配项在哪里...不确定为什么它在 1 处找到匹配项:

for sublist in (haystack):
print(needle)
print(sublist)
print([i for i, item in enumerate(needle) if item in sublist and item != ''])

我的输出看起来像

['', 'yes', 'yes', '', '', '', 'yes', 'yes', 'yes', '']
['', '', 'yes', 'yes', '', '', 'yes', 'yes', '', 'yes']
[1, 2, 6, 7, 8]
['', 'yes', 'yes', '', '', '', 'yes', 'yes', 'yes', '']
['', '', '', 'yes', 'yes', '', '', '', 'yes', 'yes']
[1, 2, 6, 7, 8]

完全可重现:

needle = ['', 'yes', 'yes', '', '', '', 'yes', 'yes', 'yes', '']
haystack = [['', '', 'yes', 'yes', '', '', 'yes', 'yes', '', 'yes'], ['', '', '', 'yes', 'yes', '', '', '', 'yes', 'yes']]`

for sublist in (haystack):
print(needle)
print(sublist)
print([i for i, item in enumerate(needle) if item in sublist and item != ''])

最佳答案

使用enumerate zip:

for sublist in haystack:
print(needle)
print(sublist)
print([i for i, (x, y) in enumerate(zip(needle, sublist)) if x and y and x == y])

输出:

['', 'yes', 'yes', '', '', '', 'yes', 'yes', 'yes', '']
['', '', 'yes', 'yes', '', '', 'yes', 'yes', '', 'yes']
[2, 6, 7]
['', 'yes', 'yes', '', '', '', 'yes', 'yes', 'yes', '']
['', '', '', 'yes', 'yes', '', '', '', 'yes', 'yes']
[8]

关于python - 在 Python 中查找列表和多个子列表之间的匹配索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48893529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com