这是输入列表
input_list = ['string','string','1','string','2','string','string','3','string','5']
这是需要的输出
[['string', 'string', '1'], ['string', '2'], ['string', 'string', '3'],
['string', '5']]
基本上,您将列表数据 string
和 (numeric data)
分组到列表列表中,每个列表包含遇到的第一个数字数据和之前的字符串数据
可以实现这个的简单算法
output_list = []
inner_list = []
for data in input_list:
inner_list.append(data)
if data.isdigit():
output_list.append(inner_list)
inner_list = []
print output_list
我想知道这是否可以变得更简单(以更少的行数完成)?
最佳答案
一个带有reduce
的衬垫。 请勿使用。
reduce(lambda n, e: n[:-1]+[n[-1]+[e]] + ([[]] if e.isdigit() else []), input_list, [[]])[:-1]
关于python - 进一步简化和缩短一个简单的分组算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31760137/