gpt4 book ai didi

python - 在 Python 中将二维二进制列表转换为十进制数的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:11 24 4
gpt4 key购买 nike

当我试图将一个巨大的二维二进制数据列表转换为十进制数时,我遇到了这个性能问题。

给定一个列表:

biglist = [
[[1,0],[0,0],[1,1]],
[[0,0],[1,1],[1,0]],
#...
#easily go to thousands of rows
]

在每一行中,我想合并每一列的所有第一个元素并将其转换为十进制数:

例如

在第 0 行,我想要 int('101',2)5

在第 1 行,我想要 int('011',2)3

我的最终目标是创建一个字典来计算什么整数出现了多少次。考虑到上面示例中的给定数据,最终结果应该是一个包含 {key:value} 对的字典,例如 {a_int : appearance_count},如下所示:

{{5:1},{3:1}}

现在我的解决方案是这样的:

result = {}
for k in biglist:
num = int("".join(str(row[0]) for row in k), 2)
#count
if num not in result:
result[num] = 1
else:
result[num] += 1

对于数千行的列表,这个循环很慢,有没有更好的解决方案?

最佳答案

只收集整数值的位而不是字符串-int 转换:(伪代码)

for every row:
value = 0
for every col:
value = (value << 1) | biglist[row][col][0] # bitwise shift left and OR

#equivalent operation:
value = value * 2 + biglist[row][col][0]

关于python - 在 Python 中将二维二进制列表转换为十进制数的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46757190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com