Python 如何求整数的倒数?

Python 如何求整数的倒数?,python,math,Python,Math,我不确定倒数是不是正确的名字,但我想是的 此示例将阐明我需要什么: 我有一个最大高度,例如5,所以高度可以从0到4。在本例中,我们讨论的是整数,所以选项是:0,1,2,3,4 我需要的是,给定一个从0到4的输入,得到一个倒数 例如: 投入:3 产出:1 视觉: 0 1 2 3 4 432110 我知道我可以这样做: position_list = list(range(5)) index_list = position_list[::-1] index = index_list[3] 但这可能

我不确定倒数是不是正确的名字,但我想是的

此示例将阐明我需要什么:

我有一个最大高度,例如5,所以高度可以从0到4。在本例中,我们讨论的是整数,所以选项是:0,1,2,3,4

我需要的是,给定一个从0到4的输入,得到一个倒数

例如: 投入:3 产出:1

视觉: 0 1 2 3 4 432110

我知道我可以这样做:

position_list = list(range(5))
index_list = position_list[::-1]
index = index_list[3]
但这可能会使用不必要的内存,也可能会使用不必要的cpu来创建两个列表。这些列表将在这些代码行之后删除,并且每次在方法中运行代码时都会重新创建。我宁愿找到一种根本不需要清单的方法


实现同样目标的有效方法是什么?在保持代码对新手可读的同时,您拥有最大高度,我们称之为max_h

您的数字是从0开始计算的,因此它们是[0;max_h-1]

您希望找到与输入数之和中变为max_h的互补数

它是max_h-1-您的_编号:


只需计算反向索引,然后直接访问相应的元素

n = 5
inp = 3

position_list = list(range(n))
position_list[n-1-inp]
# 1
这不正是马克斯在


您只需根据列表的长度和所需的位置导出索引,即可得出相反的结果:

position_list = list(range(5))
position = 3
inverse = position_list[len(position_list)-1-position]
以及:


您只需从最大值中减去:

对于提议的例子:

position_list = list(range(5))
mx = max(position_list)

[return_inverse(i, mx) for i in position_list]
# [4, 3, 2, 1, 0]

在这种情况下,您可以让输出=4-input。如果只是从1到某个数字的增量,那么像这样简单的操作就足够了。例如,如果最大值为10,最小值为5,那么您可以只执行9输入+5。9可替换为max-1,5可替换为min


所以max-1-input+min

我认为正确的术语应该是补码,就像一对数字一样。
>>> 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
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])
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]