2024-04-25 22:38:33 发布
网友
给定一个具有某些值的列表,例如[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
不知道怎么开始
可以将L中的二进制数映射到字符串,以便使用int构造函数将其转换为基2字符串:
int
def binposition(L): return int(''.join(map(str, L)), 2)
所以binposition([1, 0, 1, 1])返回:11
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__,如下所示:
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
可以将L中的二进制数映射到字符串,以便使用
int
构造函数将其转换为基2字符串:所以
binposition([1, 0, 1, 1])
返回:11
您可以将包含二进制位置的字符串转换为整数,然后将其用作列表的索引:
示例:
您还可以扩展类
list
,并定义方法__getitem__
,如下所示:相关问题 更多 >
编程相关推荐