python-3.x 检测与另一个列表中的项目相同的列表

f0brbegy  于 2023-04-13  发布在  Python
关注(0)|答案(1)|浏览(98)

给定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
我怎样才能做到呢?提前感谢您的帮助!

atmip9wb

atmip9wb1#

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

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

相关问题