给定一个二进制字符串返回,位置000在位置0,001在位置1。在函数中

2024-04-25 22:38:33 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个具有某些值的列表,例如[0,0,0]

我想确定它的位置,我的意思是:

000
001
010
011
100
101
110
111

位置为0。如果是010,位置是2。如果是101,位置是5。基本上从0开始数到你在这个位置。如果只有三个值,那么硬编码就很容易了。你知道吗

但是说im给出[1,0,0,0]或更大。有没有一个微不足道的方法来获得它的位置?你知道吗

def binposition(L):
    pass

不知道怎么开始


Tags: 方法编码列表defpassimbinposition
2条回答

可以将L中的二进制数映射到字符串,以便使用int构造函数将其转换为基2字符串:

def binposition(L):
    return int(''.join(map(str, L)), 2)

所以binposition([1, 0, 1, 1])返回:11

您可以将包含二进制位置的字符串转换为整数,然后将其用作列表的索引:

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

相关问题 更多 >