Как объединить текущий элемент со следующим элементом, когда elment находится в списке «-» в Python? - PullRequest
1 голос
/ 27 апреля 2019

Я разбил строку на список в соответствии с пробелом. Когда значением элемента является «-», я хочу объединить его со следующим элементом.

Например,

['x^3', 'x', '-', '4'] хочу преобразовать в ['x^3', 'x', '-4'].

['-', 'x^3', 'x', '-', '4'] хочу преобразовать в ['-x^3', 'x', '-4'].

    b = "x^3 + x - 4".split(" ")
    b = [x for x in b if x != '+']
    #combine "-" with next element

Ответы [ 3 ]

5 голосов
/ 27 апреля 2019

Было бы полезно replace метод str:

s = "x^3 + x - 4"
new_s = s.replace('- ', '-').replace('+ ', '')
b = new_s.split(" ")

Это более элегантно, чем использование петли for.
Кстати, избегайте использования циклов for и append из list, если можно использовать понимание списка, потому что повторный вызов метода append намного медленнее, чем понимание списка.

1 голос
/ 27 апреля 2019

С 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']
0 голосов
/ 27 апреля 2019

Попробуйте:

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...