Skip to main content
 首页 » 编程设计

python之获取整数中偶数最长序列的最佳方法

2025年05月04日14davidwang456

在 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 的生成器表达式,因此该列表不会在内存中创建。)