【问题标题】:Create random list of given length from a list of strings in python从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),其中字符串(“橙色”、“黄色”和“绿色”)随机重复,即 [“橙色”、“黄色”、“橙色”、黄色","绿色",............,"绿色"]

标签: python arrays list random


【解决方案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', ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 2016-04-01
      相关资源
      最近更新 更多