【问题标题】:Binary array with loop [duplicate]带循环的二进制数组[重复]
【发布时间】:2021-04-28 16:11:09
【问题描述】:

我有变量“n”,我用它从控制台给出 n 位计数,假设 n = 2,我如何使用表示二进制结果的循环创建两个单独的数组:[00,01,10,11] [00, 01, 10, 11] 然后将它们连接起来得到结果:

          [00, 00] 
          [00, 01]
          [00, 10]
          [00, 11] then
          [01, 00] 
          [01, 01]
          [01, 10]
          [01, 11] etc.

【问题讨论】:

  • 那么问题是什么?
  • " 如何使用表示二进制结果的循环创建两个单独的数组"
  • 如果要将它们存储为二进制,请在二进制数前使用0b。即0b01
  • 绝对做到了。现在我只需要将结果从 int 转换为 binary
  • 什么意思? binary 只是 int 的一种表示形式...你的意思是匹配二进制表示的字符串吗?

标签: python python-3.x


【解决方案1】:

你想要这个 ->

from itertools import product
l1=  ['00', '01', '10', '11']
l2 = ['00', '01', '10', '11'] 

result = list(product(l1,l2))

输出 -

[('00', '00'),
 ('00', '01'),
 ('00', '10'),
 ('00', '11'),
 ('01', '00'),
 ('01', '01'),
 ('01', '10'),
 ('01', '11'),
 ('10', '00'),
 ('10', '01'),
 ('10', '10'),
 ('10', '11'),
 ('11', '00'),
 ('11', '01'),
 ('11', '10'),
 ('11', '11')]

通过嵌套的for循环->

result = []
for val1 in l1:
    for val2 in l2:
        result.append((val1,val2))

通过列表理解 -

result = [(val1,val2) for val1 in l1 for val2 in l2]

如果初始列表中的项目是 int 类型,则使用 dict 将它们映射到相应的二进制值-

from itertools import product
l1=  [0, 1, 10, 11]
l2 = [0, 1, 10, 11] 
map_dict = {0 :'00',1 :'01', 10 : '10', 11 :'11'}
list(map(lambda x: (map_dict[x[0]],map_dict[x[1]]) ,list(product(l1,l2))))

【讨论】:

  • 是的,类似的东西。我只需要使用嵌套循环来获取每个列表的值 (00,01,10,11)
  • 添加了另外 2 个解决方案 @ERM
  • 如果两个列表相同,则无需声明两个单独的列表……product(l1, l1) 就可以了。
  • @deceze 是的。谢谢你的建议:)
  • 或者只是product(l1, repeat=2)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
  • 2016-04-14
  • 1970-01-01
相关资源
最近更新 更多