如何检查一个列表是否以另一个列表开头?
How to check if one list starts with another?
如果我在 Python、[0, 1]
和 [0, 1, 2, 3]
中有两个列表,如何检查第一个列表是否以第二个列表开头?
我知道如何处理字符串,只需使用 startswith
方法即可。但显然你不能对列表这样做。
是否有一种单行线可以满足我所描述的要求?
>>> a = [0, 1]
>>> b = [0, 1, 2, 3]
>>> a[:min(len(a), len(b))] == b[:min(len(a), len(b))]
True
只需并行迭代它们并检查相应的值是否相等。您可以使用 zip
, along with all
:
为等式迭代创建生成器表达式
>>> a = [0, 1]
>>> b = [0, 1, 2, 3]
>>> all(i==j for i,j in zip(a,b))
True
这是可行的,因为 zip
在最短的迭代器用尽时停止。
我想这就是你的意思
if the list x starts with the list y
>>> x[0:len(y)] == y
True
>>> x
[0, 1, 2, 3]
>>> y
[0, 1]
如果我在 Python、[0, 1]
和 [0, 1, 2, 3]
中有两个列表,如何检查第一个列表是否以第二个列表开头?
我知道如何处理字符串,只需使用 startswith
方法即可。但显然你不能对列表这样做。
是否有一种单行线可以满足我所描述的要求?
>>> a = [0, 1]
>>> b = [0, 1, 2, 3]
>>> a[:min(len(a), len(b))] == b[:min(len(a), len(b))]
True
只需并行迭代它们并检查相应的值是否相等。您可以使用 zip
, along with all
:
>>> a = [0, 1]
>>> b = [0, 1, 2, 3]
>>> all(i==j for i,j in zip(a,b))
True
这是可行的,因为 zip
在最短的迭代器用尽时停止。
我想这就是你的意思
if the list x starts with the list y
>>> x[0:len(y)] == y
True
>>> x
[0, 1, 2, 3]
>>> y
[0, 1]