从python中的字符串列表创建给定长度的随机列表

Posted

技术标签:

【中文标题】从python中的字符串列表创建给定长度的随机列表【英文标题】:Create random list of given length from a list of strings in python 【发布时间】:2021-04-11 02:45:27 【问题描述】:

我有一个字符串列表:

lst = ["orange", "yellow", "green"]    

我想随机重复给定长度的字符串值。

这是我的代码:

import itertools
lst = ["orange", "yellow", "green"]
list(itertools.chain.from_iterable(itertools.repeat(x, 2) for x in lst))

此实现重复但不是随机的,而且它同样重复,而它也应该是随机的,并且具有给定的长度。

【问题讨论】:

你期望什么结果?长度是全球总决赛?请在您的帖子中举例说明 你能更清楚你需要什么吗,你想要一个在输入列表中给出随机值的列表,长度相同 我想要长度列表(1,150),其中字符串(“橙色”、“黄色”和“绿色”)随机重复,即 [“橙色”、“黄色”、“橙色”、黄色","绿色",............,"绿色"] 【参考方案1】:

您可以使用列表推导:

import random
lst = ["orange", "yellow", "green"]
[lst[random.randrange(len(lst))] for i in range(100)]

解释:

random.randrange(n) 返回一个在 0n-1 范围内的整数。 列表推导重复添加来自lst 的随机元素100 次。 将100 更改为您希望获得的任意数量的元素。

【讨论】:

【参考方案2】:

一种方法是使用random.sample():

返回一个 k 长度的列表,其中包含从 种群序列或集合。

每次调用时只需将 k 设置为 1。这会为您提供一个长度为 1 的 列表,从源列表中随机选择。

要生成一个大的随机列表,请在 list comprehension 中重复调用 random.sample(),例如150 次。 (当然,您还必须对来自 random.sample() 的结果列表进行索引,以便您只检索值而不是长度为 1 的列表)。

例如:

import random
lst = ["orange", "yellow", "green"]
print([random.sample(lst, k=1)[0] for i in range(150)])
# Output
# ['green', 'orange', 'green', 'yellow', 'green', ...

【讨论】:

以上是关于从python中的字符串列表创建给定长度的随机列表的主要内容,如果未能解决你的问题,请参考以下文章

Python:列表和随机。如何在 0 和 [列表中的字符串数] 之间选择随机数? [复制]

Pyspark:从随机项目函数创建一个集合

使用列表中的随机元素创建 numpy 数组

从列表中弹出随机元素的最pythonic方法是啥?

python中怎么从一个列表中可重复的随机抽取元素构成新列表?

在给定起点和终点的字符串列表中检查路径