如何获得整数的逆?

时间:2019-06-06 14:28:05

标签: python math

我不确定逆词是专有名词,但我认为是。

此示例将阐明我的需求:

我有一个最大身高,例如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来创建两个列表。这些代码行之后,将删除列表,并且每次运行代码时都会重新创建列表(在方法内)。我宁愿找到一种根本不需要列表的方法。

实现相同目标的有效方法是什么? (同时仍使代码新手可以阅读该代码)

6 个答案:

答案 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])

enter image description here

答案 5 :(得分:0)

在这种情况下,您只需拥有output = 4-input。如果仅将1递增至某个数字,则只需执行简单的操作即可。例如,如果最大值为10,最小值为5,则可以执行9-input+5。可以将9替换为max-1,将5替换为min

所以max-1-input+min