【发布时间】:2018-02-20 20:16:54
【问题描述】:
针:['', 'yes', 'yes', '', '', '', 'yes', 'yes', '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 != ''])
【问题讨论】:
-
您说的是“对于针中的项目,如果干草堆中的“是”(这总是正确的)打印针中“是”的索引......所以
[1,2,6,7,8]将是回答至少包含 1 个"yes"的任何干草堆