Python 如何将以';分隔的列表中的元素合并在一起/';双方?

Python 如何将以';分隔的列表中的元素合并在一起/';双方?,python,list,function,element,Python,List,Function,Element,我很难准确地解释这一点,但我想要的是这个。 包含字符串“/”的元素之间的数字合并在一起,如下所示: source = ['3', '/', '7', '/', '1', '1', '/', '1', '5', '/', '2', '2', '/', '1', '1', '5'] 一些功能 output = ['3', '/', '7', '/', '11', '/', '15', '/', '22', '/', '115'] 您可以尝试遍历列表并保留一个跟踪器。当你到达一个数字时,将其添加到

我很难准确地解释这一点,但我想要的是这个。 包含字符串“/”的元素之间的数字合并在一起,如下所示:

source = ['3', '/', '7', '/', '1', '1', '/', '1', '5', '/', '2', '2', '/', '1', '1', '5']
一些功能

output = ['3', '/', '7', '/', '11', '/', '15', '/', '22', '/', '115']

您可以尝试遍历列表并保留一个跟踪器。当你到达一个数字时,将其添加到跟踪器中;当到达/时,重置并将跟踪器添加到列表中

def merge(arr):
    ret = []
    el = ''
    for i in arr:
        if i == '/':
            ret.extend([el, '/'])
            el = ''
        else:
            el += i
    ret.append(el)
    return ret

>>> merge(['3', '/', '7', '/', '1', '1', '/', '1', '5', '/', '2', '2', '/', '1', '1', '5'])
['3', '/', '7', '/', '11', '/', '15', '/', '22', '/', '115']

您可以尝试遍历列表并保留一个跟踪器。当你到达一个数字时,将其添加到跟踪器中;当到达/时,重置并将跟踪器添加到列表中

def merge(arr):
    ret = []
    el = ''
    for i in arr:
        if i == '/':
            ret.extend([el, '/'])
            el = ''
        else:
            el += i
    ret.append(el)
    return ret

>>> merge(['3', '/', '7', '/', '1', '1', '/', '1', '5', '/', '2', '2', '/', '1', '1', '5'])
['3', '/', '7', '/', '11', '/', '15', '/', '22', '/', '115']

相同的想法,但实现略有不同:

def func(input):
    ret = []
    i = 0
    curr_grp = []

    while i < len(input):
        if input[i] != '/':
            curr_grp.append(input[i])
        else:
            ret.append(''.join(curr_grp))
            ret.append('/')
            curr_grp = []
        i += 1

    return ret
def func(输入):
ret=[]
i=0
curr_grp=[]
而i
相同的想法,但实施方式略有不同:

def func(input):
    ret = []
    i = 0
    curr_grp = []

    while i < len(input):
        if input[i] != '/':
            curr_grp.append(input[i])
        else:
            ret.append(''.join(curr_grp))
            ret.append('/')
            curr_grp = []
        i += 1

    return ret
def func(输入):
ret=[]
i=0
curr_grp=[]
而i
您可以使用如下功能:

from itertools import groupby

separator = '/'
source = ['3', '/', '7', '/', '1', '1', '/', '1', '5', '/', '2', '2', '/', '1', '1', '5']

result = []
for blend, chars in groupby(source, lambda v: v != separator):
    result.append(''.join(chars) if blend else separator)

print(result)  # -> ['3', '/', '7', '/', '11', '/', '15', '/', '22', '/', '115']
您可以使用如下功能:

from itertools import groupby

separator = '/'
source = ['3', '/', '7', '/', '1', '1', '/', '1', '5', '/', '2', '2', '/', '1', '1', '5']

result = []
for blend, chars in groupby(source, lambda v: v != separator):
    result.append(''.join(chars) if blend else separator)

print(result)  # -> ['3', '/', '7', '/', '11', '/', '15', '/', '22', '/', '115']

到目前为止,您尝试了什么?请参阅itertools.groupby您应该从“”开始。加入(源)。拆分(“/”),然后您需要这样的内容:到目前为止您尝试了什么?请参阅itertools.groupby您应该从“”开始。加入(源)。拆分(“/”),然后您需要这样的内容:感谢您的快速响应。将花费一些时间来完全理解函数中发生的事情,并在我的程序中实现它。感谢您的快速响应。将花费一些时间来完全理解函数中发生的事情,并在我的程序中实现它。