我有一个列表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
具有相同的大小。有什么想法吗?逐元素减法不应该很简单吗?
答案 0 :(得分:1)
使用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]
答案 1 :(得分:0)
您可以这样做:
decay_positions = [0.2, 3, 0.5, 5, 1, 7, 1.5, 8]
result = [2-t for t in decay_positions]
print(result)
答案 2 :(得分:0)
尝试
decay_positions = [0.2, 3, 0.5, 5, 1, 7, 1.5, 8]
new_decay_positions = [2-pos for pos in decay_positions ]