首页 > 解决方案 > 在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']

注意:如果第一个元素是一个数字,那么它应该保持原样。我也有这样一个列表,没有两个数字元素出现在连续的行中。

标签: python

解决方案


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']

推荐阅读