python - 检查 number 是否连续包含 x 个相等的数字

标签 python filter built-in

我正在寻找一种方法来检查字符串是否连续包含精确的x个相等的数字(而不是更多)。例如,对于 3 个数字:788895 将为 True,但对于 7888895 则为 False

我有一个数字列表,我将在此列表上使用过滤器。

如果我想过滤那些连续至少包含 3 个数字的数字,则为:

num = filter(lambda x: any(y in x for y in ['000','111','222'..etc]),numbers)

但是如何更改此过滤器以返回 44000125 但不返回 44000012,因为一行中有 4 个零?

编辑:如果没有任何['0000','1111'...],我可以采用强力方法来测试每个数字,但我认为应该有更好的方法。

最佳答案

这会检查最长的相同数字链的长度是否正好为三。

import itertools as it

max(len(list(v)) for k,v in it.groupby(s) if k.isdigit()) == 3

示例:

123       False
1223      False
12223     True
122223    False
1112222   False
aaa1      False
aa111aaaa True

关于python - 检查 number 是否连续包含 x 个相等的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34546075/

相关文章:

python - 如何从单词中删除一个字符,但前提是它位于开头或结尾?

javascript - 过滤与第二个数组中的值匹配的对象数组

c++ - gcc 原子内置函数这么慢是正常的吗?

python - Python 中的正则表达式大括号

Python 脚本显示不同的 pythonpath

django - Django Admin自定义更改列表参数:覆盖/?e = 1

java - 过滤 MultiMap<Predicate, value>

python - help() 在哪里找到 Python 中的信息?

PHP - 使用内置函数编写自己的函数 VS

python - 在子进程中使用包含双引号的变量