【问题标题】:How to find where a specific sequence of numbers in a list starts? [duplicate]如何找到列表中特定数字序列的开始位置? [复制]
【发布时间】:2017-11-17 04:21:55
【问题描述】:

我找不到答案,我是一个新手程序员,很抱歉这个愚蠢的问题!

在python中说我想找到序列[69, 69]第一次出现在列表[34,34,34,50,39,69,69,54]中的where。有这个列表符号吗?感觉有,但是一直没找到。我不是要制作函数,我想学习 list/for 方法。

如果a = [34,34,34,50,39,69,69,54] 我如何找到[69,69] 的起点? (作为一般性声明)如果我假设 [69,69] 实际上在 a 中?

【问题讨论】:

  • 您可能想要一个宽度为 2 的 sliding window,然后检查它是否等于您的目标列表
  • 如果你不关心性能:int(",".join(map(str, [34,34,34,50,39,69,69,54])).index("69,69") / 3)
  • 如果您只需要处理 0-255 范围内的数字,这里有一个可爱的快捷方式,应该是超快的:bytes(L).index(bytes(s))
  • 不要相信这是一个现有问题的完全重复 - 这个问题比建议的问题更简单。这是我的解决方案:list(zip(x, x[1:])).index((69,69))。如果 a 是 [69,69],那么这将起作用:list(zip(x, x[1:])).index(tuple(a))
  • 通过对我上面答案的解释:解决方案将列表与减去第一个元素的相同列表一起压缩。这会生成一个包含 (i 和 i+1) 个位置的对列表。将其转换为列表,然后搜索有问题的对 (69,69)

标签: python algorithm python-3.x list sequences


【解决方案1】:
[x for x in enumerate(a) if x[1] == 69]

【讨论】:

  • 我不相信这回答了 OP 的问题。 OP 询问如何找到 69,69 序列开始的位置
猜你喜欢
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 2021-12-10
相关资源
最近更新 更多