作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个问题。我有一个列表,例如[A、B、C、D、E]
。列表的大小可能会有所不同。我必须检查是否有一个子序列,例如[A,C,E]
出现在主列表中。子序列的大小也可能不同。
这里的问题是这里的子序列不需要是连续的。只是发生的顺序很重要。
一些例子:
seq = [A,B,C,D,E]
subseq = [A,C,E]
>>>sub-sequence present in sequence
subseq = [B,D,E]
>>> sub-sequence present in sequence
subseq = [A,E]
>>> sub-sequence present in sequence
subseq = [C,B]
>>> sub-sequence not present in sequence
subseq = [B,A,E]
>>> sub-sequence not present in sequence
最佳答案
你可以使用 iter
生成一个迭代器,其消费强制执行每个成员检查的顺序。
def subcheck(li, sub_li):
it = iter(li)
return all(el in it for el in sub_li)
演示
In[95]: subcheck([1, 6, 3, 9, 4, 2], [1, 9, 3])
Out[95]: False
In[96]: subcheck([1, 6, 3, 9, 4, 2], [1, 3, 9])
Out[96]: True
这种方法之所以有效,是因为列表的 in
关键字是作为序列迭代 (the docs) 实现的:
For container types such as list, tuple, set, frozenset, dict, or collections.deque, the expression
x in y
is equivalent toany(x is e or x == e for e in y)
.
关于python - 从列表中查找有序子序列(不一定是连续的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42003901/
string zodis; sregex_token_iterator it(eil.begin(), eil.end(), std::regex("[A-Za-z]+")); sregex_toke
我是一名优秀的程序员,十分优秀!