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

标签 python list binary

给定一个具有某些值的列表,例如 [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/

相关文章:

python - 如何在使用 izip_longest 向前查看的同时一次访问 2 个列表? -Python

Python,Pairwise 'distance',需要一种快速的方法来完成

java - (Java) 将二进制数转换为字符串时指定位数(长度)?

python - 如何将数组划分为段,然后使用 python numpy 执行段的子段?

c# - 如何初始化嵌套列表容量?

同一列表中的 Python ID 不相等

unix - 如何更好地可视化这个二进制文件?

python - 使用 Kivy 访问 iPhone 照片库

python - 根据特定条件从列中减去值并获取新的 DataFrame

python - 用于时间序列图的 mpld3 鼠标位置插件