我正在尝试确定一个大列表是否具有相同的连续元素。
所以让我们说:
lst = [1, 2, 3, 4, 5, 5, 6]
在这种情况下,我会返回 true,因为有两个连续的元素 lst[4]
和 lst[5]
是相同的值。
我知道这可能可以通过某种循环组合来完成,但我想知道是否有更有效的方法来做到这一点?
原文由 tzhu10 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试确定一个大列表是否具有相同的连续元素。
所以让我们说:
lst = [1, 2, 3, 4, 5, 5, 6]
在这种情况下,我会返回 true,因为有两个连续的元素 lst[4]
和 lst[5]
是相同的值。
我知道这可能可以通过某种循环组合来完成,但我想知道是否有更有效的方法来做到这一点?
原文由 tzhu10 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用一个 简单 的 any
条件:
lst = [1, 2, 3, 4, 5, 5, 6]
any(lst[i]==lst[i+1] for i in range(len(lst)-1))
#outputs:
True
any
返回 True
如果任何可迭代元素是 True
原文由 Ohad Eytan 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答989 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
您可以使用
itertools.groupby()
和any()
*中的生成器表达式:或者作为一种更 Pythonic 的方式,您可以使用
zip()
,以检查您的列表中是否至少有两个相同的连续项目:注意:当你想检查是否有超过 2 个连续相等的项目时,第一种方法很好,否则,在这种情况下,第二个会拿走蛋糕!
\* 使用
sum(1 for _ in g)
而不是len(list(g))
在内存使用方面非常优化(不是一次读取内存中的整个列表)但后者稍快一些。