例如,内容必须只有1和0,长度为7个变量,并且每次必须不同。我是python的新手,在编码方面,我知道有一种方法可以做到,但我的知识是有限的,我真的没有尝试过我自己,但它因为我根本没有任何线索
def variable_creator:
auto_variable_list = [None]*7
content = ['0','1']
for auto_variable_list in content:
"auto_variable_list return 7 length with content variables"
我期望的输出是
list1=[0000000]
list2=[1000000]
list3=[0100000]
...
list128=[1111111]
不一定按特定顺序但不违反此声明,因为每个列表都需要为所有127列表提供不同的内容
答案 0 :(得分:1)
如果您希望[0, 1]
的所有组合长度为7
,那么您可以采用[0, 1]
重复7
次的笛卡尔积,例如:
In []:
import itertools as it
list(it.product([0, 1], repeat=7))
Out[]:
[(0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 1),
(0, 0, 0, 0, 0, 1, 0),
(0, 0, 0, 0, 0, 1, 1),
(0, 0, 0, 0, 1, 0, 0),
...
您不需要为每个项目创建自变量,因为您可以在列表中为它们编制索引:
In []:
vars = list(it.product([0, 1], repeat=7))
vars[0]
Out[]:
(0, 0, 0, 0, 0, 0, 0)
如果确实需要命名,那么dict
将是合适的结构:
In []:
vars = {'List{}'.format(i): v for i, v in enumerate(it.product([0, 1], repeat=7), 1)}
vars['List128']
Out[]:
(1, 1, 1, 1, 1, 1, 1)
因为你只是想要一个数字的二进制形式,所以替代方法只是将数字转换为二进制字符串,例如:
In []:
[tuple(map(int, format(i, '07b'))) for i in range(128)]
Out[]:
[(0, 0, 0, 0, 0, 0, 0),
(0, 0, 0, 0, 0, 0, 1),
(0, 0, 0, 0, 0, 1, 0),
(0, 0, 0, 0, 0, 1, 1),
(0, 0, 0, 0, 1, 0, 0),
...
答案 1 :(得分:0)
使用random.choice
和列表理解:
import random
choices = [0,1]
[random.choice(choices) for _ in xrange(7)]
[0, 1, 1, 0, 1, 1, 0]
[random.choice(choices) for _ in xrange(7)]
[0, 1, 1, 0, 0, 0, 0]
[random.choice(choices) for _ in xrange(7)]
[1, 0, 0, 0, 1, 1, 1]