我有一张有数字的名单。我想提取所有连续数字的数字,比如444,888,1111等等。下面使用regex的python代码正按照我所希望的方式工作。
import re
numbers = ['44444', '123', '444', '454', '76587', '888', '9090', '1111', '321', '4321', '4563', '3333', '543', '765', '4567', '555', '99999', '11211','11']
conList = []
for num in numbers:
if re.search(r'^(\d)\1+$',num):
conList.append(num)
print('conList :',conList) 结果:
conList : ['44444', '444', '888', '1111', '3333', '555', '99999', '11']现在,我试图在不使用regex模式的情况下实现相同的结果。如何用一些python代码替换regex模式?(我尝试这个只是为了教育目的。如果我有答案的话,我会张贴我的答案。)
发布于 2017-06-05 15:41:33
这是我解决这个问题的尝试。
for num in numbers:
if len(set(num)) == 1 and len(num) >1:
conList.append(num)
print('conList :',conList)或者,使用列表理解
conList = [ num for num in numbers if len(num) > 1 and len(set(num)) == 1 ]
print('conList : %s', conList)或者,使用过滤器
conList = filter(lambda x: len(x) > 1 and len(set(x)) == 1, numbers)发布于 2017-06-05 15:45:21
使用节奏曲和快速的方法来理解列表:
[i for i in numbers if len(set(i)) == 1]发布于 2017-06-05 15:45:43
您可以使用以下列表理解在一行中完成此操作:
numbers = ['44444', '123', '444', '454', '76587', '888', '9090', '1111', '321', '4321', '4563', '3333', '543', '765', '4567',
'555', '99999', '11211', '11']
conList = [x for x in numbers if x.count(x[0]) == len(x)]
print conList产出:
['44444', '444', '888', '1111', '3333', '555', '99999', '11']https://stackoverflow.com/questions/44372524
复制相似问题