我是python的新手,所以我不确定。 我的理想目标是拥有一个列表,其中第一个元素的长度为30,由0/1的随机组合组成,并且在同一列表中,元素1-29的长度为5,其长度由0的随机组合组成/ 1。因此,具有30个元素长的列表。但是,我似乎无法全神贯注于如何实现这一目标。我尝试将1-29附加到第一个元素上,但这只是一个更长的列表。
理想情况下,我希望它看起来类似于
list = [30个随机零/一个,然后是29个长度为5的元素,由随机零/一个组成]
非常感谢您的帮助。
谢谢你, 密码
答案 0 :(得分:3)
这应该有效:
import random
result = [''.join(random.choice('01') for _ in range(30))]
for i in range(29):
result.append(''.join(random.choice('01') for _ in range(5)))
结果是:
['110100110100110111100001100001', '01111', '01011', '10110',
'10101', '00011', '01010', '00110', '11000', '00111', '11001',
'00001', '11001', '00111', '00001', '10011', '11011', '01100',
'11001', '11001', '01100', '01101', '01010', '01111', '00111',
'01100', '10001', '11111', '01111', '01011']
''.join()
函数将可迭代的字符串连接为单个字符串。 ''
是分隔符。如果您希望使用整数列表,请使用以下代码:
import random
result = [random.choice([0, 1]) for _ in range(30)]
for i in range(29):
result.append([random.choice([0, 1]) for _ in range(5)])
答案 1 :(得分:1)
确定要在单个数据结构中真正使用它吗?我建议将其拆分:
import numpy as np
elem0 = (np.random.rand(30)>0.5).astype(int)
elem1to29 = (np.random.rand(29,5)>0.5).astype(int)
现在,如果您真的希望将它们包含在同一列表中,则可以将它们组合如下:
l = list(elem0)
l.extend(elem1to29)
返回如下内容:
[array([1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 0, 0, 0, 1, 0]), array([1, 1, 0, 0, 1]), array([0, 1, 1, 0, 0]), array([1, 0, 1, 0, 1]), array([0, 0, 0, 0, 0]), array([1, 1, 1, 0, 1]), array([0, 1, 1, 1, 1]), array([0, 0, 0, 0, 1]), array([1, 0, 1, 1, 1]), array([1, 0, 1, 1, 0]), array([1, 0, 0, 0, 1]), array([0, 0, 0, 1, 1]), array([0, 0, 1, 0, 1]), array([1, 0, 0, 0, 1]), array([0, 0, 1, 0, 0]), array([0, 1, 0, 0, 0]), array([1, 1, 0, 0, 1]), array([1, 0, 0, 0, 1]), array([0, 1, 1, 0, 1]), array([0, 0, 1, 1, 0]), array([1, 0, 1, 0, 1]), array([0, 1, 1, 1, 0]), array([0, 0, 1, 1, 1]), array([1, 1, 0, 1, 1]), array([0, 1, 1, 1, 0]), array([0, 1, 1, 0, 0]), array([1, 0, 0, 1, 0]), array([0, 1, 0, 1, 0]), array([0, 0, 0, 1, 1]), array([0, 0, 0, 1, 0])]