首页 > 解决方案 > 如何根据列表项打破列表并创建相关字符串

问题描述

我有一个类似于以下的列表:

['2019','Melbourne','region1','suburb1','\n', '2018','region1','Melbourne','\n']

我想打破(拆分)并存储基于'\ n'的列表信息。这意味着我想从上面的列表中创建以下字符串:

string1='2019, Melbourne, region1, suburb1'
string2='2018, region1, Melbourne'

我知道如何使用简单的 for 循环并围绕索引进行操作,但我想知道是否有人可以帮助我以更专业的方式完成上述任务。因为玩弄索引会使我的代码有点复杂和不可读。

标签: pythonlistsplit

解决方案


You can get a list of the desired strings, using itertools.groupby with an appropriate key function to chunk the list and str.join to turn the chunks into strings:

from itertools import groupby

l = ['2019','Melbourne','region1','suburb1','\n', '2018','region1','Melbourne','\n']

[', '.join(g) for k, g in groupby(l, key=lambda s: s != '\n') if k]
# ['2019, Melbourne, region1, suburb1', '2018, region1, Melbourne']

Note that groupby returns a lazy iterator producing equally lazy groups. So this does not build any unnecessary intermediate in-memory lists.


推荐阅读