Вычитание каждого элемента списка из всех элементов справа в том же списке - PullRequest
0 голосов
/ 29 мая 2019

Мне нужно манипулировать списком, чтобы получить вычитание (вычитая каждое число из каждого числа справа).

Я попытался использовать приведенный ниже код, который работает с 2 для циклов, есть ли в любом случае, я могу это сделатьтолько 1 для цикла или лучше, чем я сделал.

list=[3,2,5,4,3]
output_list = [0]

    for element in list:
        for i in range(0, length(list)):
            new_element = [ (list[i] - element) if i > index(element) else 0]
            if new_element > 0:
                output_list.append( new_element )

пример: вход [3,2,5,4,3]

вычитать как [2-3, 5-3, 4-3, 3-3, 5-2, 4-2, 3-2, 4-5, 3-5, 3-4] = [-1, 2, 1, 0, 3, 2, 1, -1, -2, 1]

вывод со значениями> 0, первый 0 из инициализации [0, 2, 1, 3, 2, 1, 1]

Ответы [ 3 ]

0 голосов
/ 29 мая 2019

Попробуйте, вы можете использовать itertools.combinsk

>>> from itertools import combinations
>>> from operator import sub
>>> l = [3,2,5,4,3]
>>> [0]+[sub(c[1],c[0]) for c in combinations(l,2) if sub(c[1],c[0]) > 0]
[0, 2, 1, 3, 2, 1]
0 голосов
/ 29 мая 2019

с использованием списка

a=[3,2,5,4,3]
b= [j-a[i] for i,v in enumerate(a) for j in a[i+1:] if j-a[i]>0]

print(b)

выход

 [2, 1, 3, 2, 1]
0 голосов
/ 29 мая 2019

Это должно генерировать правильный вывод:

values = [3,2,5,4,3]
print([j-i for k,i in enumerate(values[:-1]) for j in values[k+1:] if j-i > 0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...