Объединение элементов определенного значения с соседним элементом в списке - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь объединить определенные элементы в списке, если они имеют определенное значение с соседним справа элементом. (Конкретное значение в этом случае - знак минус).
Скажем, у меня есть следующий список:

x = ['0', '0', '8', '-', '6', '4', '0', '5', '1', '2', '1', '2', '-', '5']  

Что я могу сделать со списком, чтобы он выглядел так?

x = ['0', '0', '8', '-6', '4', '0', '5', '1', '2', '1', '2', '-5'] 

Мне нужно, чтобы каждый экземпляр элемента '-' был связан со следующим элементом (индекс которого равен +1 индекса минуса). Извините, если это довольно расплывчато, я все еще новичок в python, и поэтому моей терминологии может не хватать.

Ответы [ 2 ]

1 голос
/ 06 марта 2019
neg = False
out = []
for i in x:
    if i == '-':
        neg = True
    else:
        if neg:
            out += ['-' + i]
            neg = False
        else:
            out += [i]


In [18]: out
Out[18]: ['0', '0', '8', '-6', '4', '0', '5', '1', '2', '1', '2', '-5']

В приведенном выше коде есть флаг neg, который указывает, что предыдущий элемент был знаком минус или нет (True означает, что это был знак минус). Затем мы заполняем список out элементом из x с правилом, согласно которому, если у вас есть -, тогда установите флаг в True, но ничего не делайте. Тогда, если элемент не - и neg равен True, тогда добавьте отрицательный элемент и установите флаг на False, но если флаг False, просто добавьте элемент.

0 голосов
/ 06 марта 2019

Попробуйте:

x = ['0', '0', '8', '-', '6', '4', '0', '5', '1', '2', '1', '2', '-', '5']

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

y = [i for i in x if i != '-']
print(y)

Объединяет элементы, затем удаляет все знаки минуса '-' из списка.

...