相关疑难解决方法(0)

确定序列是否在Python中的另一个序列中的最佳方法

这是"字符串包含子字符串"问题到(更多)任意类型的概括.

给定一个序列(例如列表或元组),确定另一个序列是否在其中的最佳方法是什么?作为奖励,它应该返回子序列开始的元素的索引:

用法示例(序列中的序列):

>>> seq_in_seq([5,6],  [4,'a',3,5,6])
3
>>> seq_in_seq([5,7],  [4,'a',3,5,6])
-1 # or None, or whatever
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只是依靠蛮力,它似乎缓慢,丑陋,笨拙.

python algorithm sequence

25
推荐指数
4
解决办法
2万
查看次数

结构模式匹配python - 匹配序列中的任何位置

我有一个对象列表,想要检查列表的一部分是否与特定模式匹配。

考虑以下列表:

l1 = ["foo", "bar"]
l2 = [{1, 2},"foo", "bar"]
l3 = ["foo", "bar", 5]
l4 = [{1,2},"foo", "bar", 5, 6]
Run Code Online (Sandbox Code Playgroud)

["foo", "bar"]在所有不同情况下我将如何匹配序列?

我天真的想法是:

match l4:
    case [*_, "foo", "bar", *_]:
        print("matched!")
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是一个SyntaxError: multiple starred names in sequence pattern. 问题是,我不知道有多少元素在该模式的前面和后面。

编辑:我想我需要澄清:"foo", "bar"只是一个更复杂模式的替代品。(我正在使用 AST 对象)

python structural-pattern-matching

5
推荐指数
1
解决办法
914
查看次数