如何迭代二进制数字的嵌套列表并将其十进制数附加到列表中?例如:[[0,0,1,0,1],[1,0,0,1]]=[5,17


binary_list = [['0', '0', '1', '0', '1'], ['1', '0', '1', '0', '1'], ['0', '0', '0', '0', '0'], ['0', '1', '0', '0', '1'], ['1', '1', '0', '0', '0'], ['0', '0', '1', '0', '1'], ['0', '0', '0', '1', '0'], ['0', '0', '1', '0', '0']]
cipher_value = []
cipher_num = 0
for list in binary_list:
for num in range(len(list)):

if num == 0 and list[num] == 1:
cipher_num += 16
elif num == 0 and list[num] == 0:
continue

if num == 1 and list[num] == 1:
cipher_num += 8
elif num == 1 and list[num] == 0:
continue

if num == 2 and list[num] == 1:
cipher_num += 4
elif num == 2 and list[num] == 0:
continue

if num == 3 and list[num] == 1:
cipher_num += 2
elif num == 3 and list[num] == 0:
continue

if num == 4 and list[num] == 1:
cipher_num += 1
elif num == 4 and list[num] == 0:
continue

cipher_value.append(cipher_num)
cipher_num = 0
break

您可以使用int(..., 2)将数字的二进制表示形式(字符串类型(转换为整数。因此,借助join和列表理解:

cipher_value = [int(''.join(sublist), 2) for sublist in binary_list]
print(cipher_value) # [5, 21, 0, 9, 24, 5, 2, 4]

对于列表中的每个元素,您可以使用位移位将二进制表示转换为十进制整数。这具有能够处理可变数量的二进制数以及可变长度的二进制数的优点:

binary_list = [['0', '0', '1', '0', '1'], ['1', '0', '1', '0', '1'], ['0', '0', '0', '0', '0'], ['0', '1', '0', '0', '1'], ['1', '1', '0', '0', '0'], ['0', '0', '1', '0', '1'], ['0', '0', '0', '1', '0'], ['0', '0', '1', '0', '0']]
cipher_values = []
for binary_repr in binary_list:
cipher_num = 0
for bit in binary_repr:
cipher_num <<= 1
cipher_num += int(bit)
cipher_values.append(cipher_num)
print(cipher_values)

相关内容