在 Python 中获取整数中偶数的最长序列的最有效方法是什么?例如,如果我有一个数字 2456890048,那么最长的序列应该是 0048。
是否应该将整数转换为字符串来确定最长的序列?还是应该转成列表,然后根据每一项的索引,判断哪个序列是最长的?或者有没有我不知道的更有效的方法(我对 Python 很陌生,我不确定解决这个问题的最佳方法是什么)。
请您参考如下方法:
您可以使用 itertools.groupby 和 max:
>>> from itertools import groupby
def solve(strs):
return max((list(g) for k, g in groupby(strs, key=lambda x:int(x)%2) if not k),
key=len)
...
>>> solve('2456890048') #or pass `str(2456890048)` if you've integers.
['0', '0', '4', '8']
>>> solve('245688888890048')
['6', '8', '8', '8', '8', '8', '8']
这里:
[list(g) for k, g in groupby('2456890048', key=lambda x:int(x)%2) if not k]
返回:
[['2', '4'], ['6', '8'], ['0', '0', '4', '8']]
现在我们可以在这个列表上应用max(使用key=len)来获得最长的序列。 (请注意,在原始代码中,我使用了带有 max 的生成器表达式,因此该列表不会在内存中创建。)
