当python中列表中的元素为“-”时,如何将当前元素与下一个元素合并?

时间:2019-04-27 06:20:40

标签: python list

我根据空间将字符串分成列表。当元素值为“-”时,我想将其与下一个元素合并。

例如,

Impl要转换为['x^3', 'x', '-', '4']

['x^3', 'x', '-4']要转换为['-', 'x^3', 'x', '-', '4']

['-x^3', 'x', '-4']

3 个答案:

答案 0 :(得分:5)

replace的{​​{1}}方法将很有用:

str

这比使用s = "x^3 + x - 4" new_s = s.replace('- ', '-').replace('+ ', '') b = new_s.split(" ") 循环更优雅。
顺便说一句,如果可以使用列表理解,请避免使用for的{​​{1}}循环和for的{​​{1}},因为重复调用append方法比列表理解要慢得多。

答案 1 :(得分:1)

通过for循环,您可以执行以下操作:

l1 = ['x^3', 'x', '-', '4']
l2 = ['-','x^3', 'x', '-', '4']


def func(x):
    new_x = []
    temp = None
    for i in x:
        if temp:
            i = temp+i
            temp = None
        if i == '-':
            temp = "-"
            continue

        new_x.append(i)

    return new_x

print(func(l1))
print(func(l2))

输出:

['x^3', 'x', '-4']
['-x^3', 'x', '-4']

答案 2 :(得分:0)

尝试一下:

def main(arr: list) -> list:
    """Combines '-' with next element in list"""

    for i in range(len(arr)):
        try:
            if arr[i] == '-':
                arr[i + 1] = '-' + arr[i + 1]

                arr[i] = ''
        except IndexError:
            pass

    while True:
        if '' in arr:
            arr.remove('')
        else:
            break

    return arr


print(main(['-', 'x^3', 'x', '-', '4']))

还可以使用eval()进行计算:

b = "x**3 + x - 4"

x = 2

print(eval(b))