首页 > 解决方案 > Python:合并列表中的相邻数字

问题描述

是否可以合并字符列表中的数字?

我有一个包含一些字符的列表:

my_list = ['a', 'f', '£', '3', '2', 'L', 'k', '3']

我想连接相邻的数字如下:

my_list = ['a', 'f', '£', '32', 'L', 'k', '3']

我有这个,它工作正常,但我真的不喜欢它是如何出来的。

def number_concat(my_list):
    new_list = []
    number = ""

    for ch in my_list:
        if not ch.isnumeric():
            if number != "":
                new_list.append(number)
                number =""
            new_list.append(ch)            
        else:
            number = ''.join([number,ch])

    if number != "":
        new_list.append(number)

    return new_list           

最好的方法是什么?

标签: pythonlist

解决方案


您可以使用itertools.groupby

from itertools import groupby

my_list = ['a', 'f', '£', '3', '2', 'L', 'k', '3']

out = []
for _, g in groupby(enumerate(my_list, 2), lambda k: True if k[1].isdigit() else k[0]):
    out.append(''.join(val for _, val in g))

print(out)

印刷:

['a', 'f', '£', '32', 'L', 'k', '3']

推荐阅读