Python: константа, вычитаемая элементами списка для возврата списка - PullRequest
0 голосов
/ 28 марта 2019

У меня есть список decay_positions = [0.2, 3, 0.5, 5, 1, 7, 1.5, 8], и я хочу список такой, что

new_position = 2 - decay_positions

По сути, я хочу новый список, где его элементы равны 2, вычитается из элементов decay_positions Однако, когда я делаю:

decay_positions = [0.2, 3, 0.5, 5, 1, 7, 1.5, 8]
print(2 - decay_positions)

Я получаю

TypeError: unsupported operand type(s) for -: 'int' and 'list'

Так что я подумал, может быть, если размеры не совпадают, вы можете вычесть.Итак, я сделал

decay_positions = [0.2, 3, 0.5, 5, 1, 7, 1.5, 8]
print([2]*len(decay_positions) - decay_positions)

, но он все равно дает TypeError: unsupported operand type(s) for -: 'int' and 'list'

, несмотря на тот факт, что [2]*len(decay_positions) и decay_positions имеют одинаковый размер.Так мысли?Разве поэтапное вычитание не должно быть достаточно простым?

Ответы [ 3 ]

1 голос
/ 28 марта 2019

Использовать NumPy ftw:

>>> import numpy as np
>>> decay_positions = np.array([0.2, 3, 0.5, 5, 1, 7, 1.5, 8])
>>> 2 - decay_positions
array([ 1.8, -1. ,  1.5, -3. ,  1. , -5. ,  0.5, -6. ])

Если вы по какой-то причине презираете NumPy, вы всегда можете использовать списки в качестве дополнительной опции:

>>> [2-dp for dp in [0.2, 3, 0.5, 5, 1, 7, 1.5, 8]]
[1.8, -1, 1.5, -3, 1, -5, 0.5, -6]
0 голосов
/ 28 марта 2019

Попробуйте

decay_positions = [0.2, 3, 0.5, 5, 1, 7, 1.5, 8]
new_decay_positions = [2-pos for pos in decay_positions ]
0 голосов
/ 28 марта 2019

Вы можете сделать это:

decay_positions = [0.2, 3, 0.5, 5, 1, 7, 1.5, 8]
result = [2-t for t in decay_positions]
print(result)
...