我不确定逆词是专有名词,但我认为是。
此示例将阐明我的需求:
我有一个最大身高,例如5,所以身高的范围可以从0到4。在这种情况下,我们所说的是整数,因此选项为:0、1、2、3、4。
在输入范围为0到4(包括4)的情况下,我需要的是获取反数。
示例:
输入:3
输出:1
视觉:
0 1 2 3 4
4 3 2 1 0
我知道我可以这样做:
position_list = list(range(5))
index_list = position_list[::-1]
index = index_list[3]
但这可能会使用不必要的内存,并且可能会不必要地使用cpu来创建两个列表。这些代码行之后,将删除列表,并且每次运行代码时都会重新创建列表(在方法内)。我宁愿找到一种根本不需要列表的方法。
实现相同目标的有效方法是什么? (同时仍使代码新手可以阅读该代码)
答案 0 :(得分:3)
不是max - in
...吗?
>>> MAX=4
>>> def calc(in_val):
... out_val = MAX - in_val
... print('%s -> %s' % ( in_val, out_val ))
...
>>> calc(3)
3 -> 1
>>> calc(1)
1 -> 3
答案 1 :(得分:2)
您只需要从max
中减去:
def return_inverse(n, mx):
return mx - n
对于建议的示例:
position_list = list(range(5))
mx = max(position_list)
[return_inverse(i, mx) for i in position_list]
# [4, 3, 2, 1, 0]
答案 2 :(得分:1)
您有最大身高,我们称其为max_h
。
您的数字从0开始计数,因此它们位于[0; max_h - 1]
您要查找与输入数字加在一起成为max_h
的补码
它是max_h - 1 - your_number
:
max_height = 5
input_number = 2
for input_number in range(5):
print('IN:', input_number, 'OUT:', max_height - input_number - 1)
IN: 1 OUT: 3 IN: 2 OUT: 2 IN: 3 OUT: 1 IN: 4 OUT: 0
答案 3 :(得分:0)
只需计算反向索引,然后直接访问相应的元素。
n = 5
inp = 3
position_list = list(range(n))
position_list[n-1-inp]
# 1
答案 4 :(得分:0)
您只需从列表的长度和所需位置得出索引,即可得出“倒数”:
position_list = list(range(5))
position = 3
inverse = position_list[len(position_list)-1-position]
并且:
for i in position_list:
print(i, position_list[len(position_list)-1-i])
答案 5 :(得分:0)
在这种情况下,您只需拥有output
= 4-input
。如果仅将1递增至某个数字,则只需执行简单的操作即可。例如,如果最大值为10,最小值为5,则可以执行9-input+5
。可以将9替换为max-1
,将5
替换为min
。
所以max-1-input+min