python - 进一步简化和缩短一个简单的分组算法

标签 python algorithm

这是输入列表

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/

相关文章:

python - 如何在 ipython 笔记本中显示 PIL 图像

python - 将数据从 Excel 工作表 (openpyxl) 传输到数据库表 (dbf)

c++ - 满足以下条件的高效图算法?

algorithm - 没有 3-clique 的图形至少需要 4 种颜色

algorithm - 后续加权

python - SWIG - 将 C 字符串数组包装到 python 列表

python - 我可以从 python 上下文管理器中检索 __exit__ 的返回值吗?

python - 在其他计算机上使用带有外部模块的 Python 脚本?

java - Java GPS 的公共(public)交通算法

algorithm - 查找一组中存在的元素而不是另一组中存在的元素