Python不同大小的元素

时间:2018-06-22 12:51:03

标签: python

我是python的新手,所以我不确定。 我的理想目标是拥有一个列表,其中第一个元素的长度为30,由0/1的随机组合组成,并且在同一列表中,元素1-29的长度为5,其长度由0的随机组合组成/ 1。因此,具有30个元素长的列表。但是,我似乎无法全神贯注于如何实现这一目标。我尝试将1-29附加到第一个元素上,但这只是一个更长的列表。

理想情况下,我希望它看起来类似于

list = [30个随机零/一个,然后是29个长度为5的元素,由随机零/一个组成]

非常感谢您的帮助。

谢谢你, 密码

2 个答案:

答案 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])]