【问题标题】:Python random choice from listPython 从列表中随机选择
【发布时间】:2018-08-26 06:08:20
【问题描述】:

我如何从下面给出的列表中选择随机选项。

colours = ['red', 'blue', 'green', 'yellow', 'black', 'purple', 'Brown', 'Orange', 'violet', 'gray']
  1. 现在从以上 10 个项目列表中选择 1 个项目。
  2. 打印

  3. 从剩余的 9 个项目中挑选 2 个项目。

  4. 打印

  5. 最后从剩下的 7 件中挑出 3 件。

  6. 打印
  7. 所以最终结果会是这样的

棕色

绿色和紫色

红黑灰

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    一个简单的方法就是从列表中删除选定的值。如果使用sets 会稍微简单一些:

    In []:
    colours = {'red', 'blue', 'green', 'yellow', 'black', 'purple',
               'Brown', 'Orange', 'violet', 'gray'}
    for n in [1, 2, 3]:
        cs = random.sample(colours, k=n)
        colours -= set(cs)
        print(cs)
    
    Out[]:
    ['Brown']
    ['Orange', 'red']
    ['purple', 'gray', 'blue']
    

    【讨论】:

    • @Demotry 您在评论中提出的问题显然是另一个问题!请根据您实际提出的问题判断您收到的(好的)答案,然后继续针对您的“不和谐”问题提出另一个问题
    • 是的,但如果我创建另一个问题,它会在不和谐的情况下工作,它是否指重复问题?
    【解决方案2】:
    colors = ['red', 'blue', 'green', 'yellow', 'black', 'purple','Brown', 'Orange', 'violet', 'gray']
    for n in range(1,4):
        select=np.random.choice(colors,n)
        print(select)
        colors=list(set(colors).difference(set(select)))
    
    output:-['Brown']
            ['red' 'violet']
            ['yellow' 'Orange' 'black']
    

    【讨论】:

    • @Demotry 我是初学者,我不知道你的问题。
    • 没关系。我得到了 Tristo 的答复。
    【解决方案3】:

    我使用的方法是对你的输入向量进行洗牌,取你需要的选定数量的元素。

    import random
    
    colours = ['red', 'blue', 'green', 'yellow', 'black', 'purple', 'Brown', 'Orange', 'violet', 'gray']
    random.shuffle(colours)
    
    for i in range(1, 4):
      n, colours = colours[0:i], colours[i:]
      print(n)
    

    【讨论】:

    • 无需每次都重新洗牌。随机播放一次
    猜你喜欢
    • 2012-11-01
    • 1970-01-01
    • 2012-02-21
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多