给定一个具有某些值的列表,例如 [0,0,0]
我希望找到它的位置,我的意思是:
000
001
010
011
100
101
110
111
位置是 0。如果是 010,则位置是 2。如果是 101,则位置是 5。基本上从 0 开始计数,直到到达该位置。如果它只有三个值,那么对其进行硬编码会很容易。
但假设我给出了 [1,0,0,0] 或更大。有没有一种简单的方法可以得到它的位置?
def binposition(L):
pass
不知道如何开始
最佳答案
您可以将包含二进制位置的字符串转换为整数,然后将其用作列表的索引:
def binposition(binary_position, L):
return L[int(binary_position, 2)]
示例:
>>> L = list(range(10))
>>> binposition('111', L)
7
>>> binposition('101', L)
5
您还可以扩展类list
,并定义方法__getitem__
,如下所示:
class L(list):
def __getitem__(self, key):
return list.__getitem__(self, int(key, 2))
>>> l = L()
>>> l.extend(list(range(10)))
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> l['111']
7
>>> l['001']
1
关于python - 给定一个二进制字符串,返回位置 000 位于位置 0,001 位于位置 1。在函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55466465/