在Python中从字符串列表中创建指定长度的随机列表

7

我有一个字符串列表:

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

我希望你能随机重复给定长度的字符串数值。

这是我的代码:

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

这个实现重复但不是随机的,而且它的重复是相等的,虽然给定了长度,但应该也要是随机的。


你期望什么结果?长度是全局最终的吗?请在您的帖子中举例说明。 - azro
你能更清楚地表达你的需求吗?你需要一个列表,该列表具有与输入列表相同的长度,并且其中包含一个随机值。 - Suhas Kashyap
1
我想要一个长度为(1,150)的列表,其中包含随机重复的字符串("orange", "yellow"和"green"),即["orange","yellow","orange","yellow","green",...........,"green"]。 - A R.
2个回答

5
你可以使用列表推导式:

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

说明:

  • random.randrange(n) 返回一个范围在 0n-1 之间(包括两端)的整数。
  • 该列表推导式从 lst 中随机选择元素并重复添加100次。
  • 100 更改为您希望获得的元素数量。

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

从总体序列或集合中选择唯一元素的长度为k的列表。

每次调用时将k设置为1即可。这会给你一个长度为1的列表,从源列表中随机选择。
要生成大型随机列表,请在列表推导式中重复调用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', ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接