检查列表是否以另一个列表的元素开头

2024-10-01 19:29:04 发布

您现在位置:Python中文网/ 问答频道 /正文

如果列表的开头正好是另一个列表的元素,那么检查最简单(最具python风格的方法)是什么?考虑以下示例:

li = [1,4,5,3,2,8]

#Should return true
startsWithSublist(li, [1,4,5])

#Should return false
startsWithSublist(list2, [1,4,3])

#Should also return false, although it is contained in the list
startsWithSublist(list2, [4,5,3])

当然,我可以反复查看列表,但我想有一个更简单的方法。两个列表永远不会包含相同的元素两次,第二个列表将始终比第一个列表短或相等长。要匹配的列表的长度是可变的。在

如何在Python中实现这一点?在


Tags: 方法falsetrue元素示例列表return风格
2条回答

使用列表切片:

>>> li = [1,4,5,3,2,8]
>>> sublist = [1,4,5]
>>> li[:len(sublist)] == sublist
True

您可以使用all来执行此操作,而无需切片和创建另一个列表:

def startsWithSublist(l,sub):
    return len(sub) <= l and all(l[i] == ele  for i,ele  in enumerate(sub))

如果找到不匹配的元素,它将短路;如果所有元素都相同,则返回True,还可以使用itertools.izip

^{pr2}$

相关问题 更多 >

    热门问题