从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)
返回一个在 0
到 n-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 和 [列表中的字符串数] 之间选择随机数? [复制]