python - 在python中合并符合某些条件的行
问题描述
我有一些清单:
a=['abc','123','def','ghi','456','jkl','789','mno','pqr']
如果元素是数字,我想组合列表的元素,即它包含 0-9,
如:
b=['abc 123','def','ghi 456','jkl 789','mno','pqr']
怎么做?如果数字元素以数字(如int
)形式给出,我有一个解决方案,但在这里它们是刺痛。请帮助
假设如果a=['abc',123,'def','ghi',456,'jkl',789,'mno','pqr']
那么我们可以这样做:
t=[]
for i in a:
if isinstance(i, int):
t[-1] = "{0} {1}".format(t[-1], i)
else:
t.append(i)
print(t)
那么输出将是:
t=['abc 123','def','ghi 456','jkl 789','mno','pqr']
如何做到这一点a=['abc','123','def','ghi','456','jkl','789','mno','pqr']
注意:如果第一个元素是一个数字,那么它应该保持原样。我也有这样一个列表,没有两个数字元素出现在连续的行中。
解决方案
a=['abc','123','def','ghi','456','jkl','789','mno','pqr']
new_lst = []
for x in a:
if x.isdigit():
new_lst[-1] += ' {}'.format(x)
else:
new_lst.append(x)
print(new_lst)
输出
['abc 123', 'def', 'ghi 456', 'jkl 789', 'mno', 'pqr']
推荐阅读
- javascript - JS + API 消耗中的变量:解析错误:意外的令牌
- mysql - Laravel 创建函数只插入数据库中的一些字段
- c++ - 两个垫子的 OpenCV 数据相同,但使用 Mat::at 检索时的值已损坏
- flutter - 如何在颤动中使用下拉选择创建表单模式
- apache-kafka - 如何在 cassandra 中添加外部 jar 以便在触发器中使用它们
- monaco-editor - 如何允许完成建议出现在摩纳哥编辑器的片段内?
- reactjs - 定义多种样式 React
- linux - 设置简单的 Web 应用程序服务和测试 - Linux debian 10
- r - Excel中R中的求解函数
- vue.js - Vue.js 应用程序中 IIS 上的当前登录用户