【问题标题】:Python, how to randomly add/append elements from one list to another?Python,如何将一个列表中的元素随机添加/附加到另一个列表?
【发布时间】:2017-02-16 19:57:07
【问题描述】:
import random
global colours 
global current
colours = ["Red","Yellow","Blue","Green","Orange","White"]
current = []

def randompicker():
    for i in range(4):
        current = random.choice(colours)
randompicker()
print(colours)
print(current)

嘿,所以上面的程序应该从名为 colors 的列表中随机添加 4 个元素到另一个名为 current 的列表中。我浏览了论坛,但找不到针对此案例的具体帮助。

简而言之,有没有一种快速有效的方法可以将一个列表中的 4 个随机元素直接添加到另一个列表中?

谢谢

【问题讨论】:

    标签: python arrays list random append


    【解决方案1】:

    您正在描述random.sample 的基本用法。

    >>> colours = ["Red","Yellow","Blue","Green","Orange","White"]
    >>> random.sample(colours, 4)
    ['Red', 'Blue', 'Yellow', 'Orange']
    

    如果您想允许重复,请改用random.choices(Python 3.6 中的新功能)。

    >>> random.choices(colours, k=4)
    ['Green', 'White', 'White', 'Red']
    

    【讨论】:

      【解决方案2】:

      要修复您的原始代码,请执行以下操作

      current.append(random.choice(colours))
      

      而不是

      current = random.choice(colours)
      

      您还应该将current 设为局部变量并返回它而不是全局变量。同样,您应该将选项数组作为参数传递,而不是处理全局变量目录。这两项更改都将为您的函数提供更大的灵活性。

      【讨论】:

      • 嘿,谢谢你的回答,有没有办法可以在没有重复的情况下做到这一点?
      • @JayHunkys 当然。换句话说,您需要在添加之前检查current 列表以查看它是否已经包含下一个选项。看看我是如何开始用英语描述解决方案的?我把它留给你,让你更细化一下,这样你就可以把它翻译成代码。
      • @JayHunkys 或者,您可以使用 set 为您进行检查
      • 谢谢,我现在已经按照我想要的方式完成了所有工作。感谢您的宝贵时间。
      猜你喜欢
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 2022-12-07
      相关资源
      最近更新 更多