检测与另一个列表以相同项开头的列表



给定template_list

template_list = [['item 1'], ['item 2','item 3']]

test_list,我们如何识别test_list是否以template_list中作为子列表存在的项目开始?

例如:

template_list = [['item 1'], ['item 2','item 3']]
test_list = ['item 1']
print(any([x[:len(test_list)] == test_list for x in template_list]))

返回True,如预期的

test_list = ['item 2', 'item 3']
print(any([x[:len(test_list)] == test_list for x in template_list]))

返回True,如预期的

,但我希望以下两种情况也返回True:

test_list = ['item 1', 'irrelevant item 1', 'irrelevant item 2', 'irrelevant item 3']
print(any([x[:len(test_list)] == test_list for x in template_list])) # returns False
test_list = ['item 2', 'item 3', 'irrelevant item 1', 'irrelevant item 2']
print(any([x[:len(test_list)] == test_list for x in template_list])) # returns False

那么,我所期望的是当test_list以与template_list中的子列表之一完全相同的项开始时,即使test_list中有更多的项,也要返回True

我怎么才能做到呢?提前感谢您的任何帮助!

将您的逻辑更改为以下内容(检查template_list的任何条目是否为test_list的起始部分):

any(x == test_list[:len(x)] for x in template_list)

最新更新