gpt4 book ai didi

python - 查找列表中连续数字的开头和结尾

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:18:29 25 4
gpt4 key购买 nike

我有一个输入列表:

s = [1, 2, 3, 5, 6, 9, 10, 11]

我正在尝试将以下内容作为输出:

lows = [1, 5, 9]
highs = [3, 6, 11]

lows 列表包含列表中连续数字的所有子列表的所有最小数字:[1, 2, 3]、[5, 6] 和 [9, 10, 11]。高点反之。

  • 一个子列表保证至少有 2 个成员。
  • 输入列表中的所有数字都是唯一的。

完成此任务的最简洁方法是什么?我想知道 itertools 中是否有什么东西可以很好地做到这一点?

最佳答案

>>> from itertools import groupby, count
>>> from operator import itemgetter
>>> s = [1, 2, 3, 5, 6, 9, 10, 11]
>>> ig = itemgetter(0, -1)
>>> lows, highs = zip(*(ig(list(g)) for k, g in groupby(s, lambda x, c=count(): x-next(c))))
>>> lows
(1, 5, 9)
>>> highs
(3, 6, 11)

关于python - 查找列表中连续数字的开头和结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25861197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com