如何在 python 中实现以下算法:
(来源)
def getGraycodeRank(n, t):
r = 0#range
b = 0
for i in reversed(range(0, n)):
if n - i IS IN t: #how to check it?
b = 1-b
if b == 1:
r += 2^i
return r
您可以使用in
运算符:
if (n - i) in t:
或者干脆
if n - i in t:
此外,运营商^
不会按照您的想法行事。要获得数字的幂,请使用**
:
r += 2**i
笔记:
in
运算符将使用元组、列表、字典、字符串。编辑:
由于t
是字符串,要检查整数 ( n - i
) 是否包含在 中t
,您必须将整数转换n - i
为字符串:
if str(n - i) in `t`:
# ...
假设t
是一个dict
或list
if (n - i) in t:
这应该工作......