【问题标题】:How can I shuffle two different lists in Python?如何在 Python 中打乱两个不同的列表?
【发布时间】:2021-03-08 04:16:14
【问题描述】:

我想打乱两个列表并将它们合并为一个。但是当我使用random.shuffle(a, b) 时,它会向我抛出列表对象不可调用的回溯。如何解决此问题并合并两个列表?这是我的代码:

import random

alphabet = 'abcdefghijklmnopqrstuvwxyz'
numbers = '1234567890'

a = random.sample(list(alphabet), 3)
print(a)

b = random.sample(list(numbers), 3)
print(b)

c = random.shuffle(a, b)
print(c)

【问题讨论】:

  • a1 是预期输出之一吗?
  • 我认为你想要的是将c = random.shuffle(a, b) 替换为c = a + b,然后是random.shuffle(c)。 random.shuffle 修改一个列表。

标签: python python-3.x list random


【解决方案1】:

这是因为random.shuffle 的第二个参数是返回值的函数,而不是第二个要混入另一个列表的列表:

可选参数 random 是一个 0 参数函数,返回 [0.0, 1.0) 中的随机浮点数;默认情况下,这是函数 random()。

实现目标的最简单方法可能是简单地组合两个列表,然后打乱合并的列表:

import random

alphabet = 'abcdefghijklmnopqrstuvwxyz'
numbers = '1234567890'

a = random.sample(list(alphabet), 3)
b = random.sample(list(numbers), 3)

a.extend(b)
random.shuffle(a)

【讨论】:

    【解决方案2】:

    您可以用 b 扩展 a,随机播放 a,然后打印 a。您必须这样做,因为 random.shuffle 会修改列表并且它不会返回新列表。

    import random
    
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    numbers = '1234567890'
    
    a = random.sample(list(alphabet), 3)
    print(a)
    
    b = random.sample(list(numbers), 3)
    print(b)
    a.extend(b)
    random.shuffle(a)
    print(a)
    

    【讨论】:

      【解决方案3】:

      你需要结合然后洗牌。

      c = a + b
      random.shuffle(c)
      

      您收到该错误是因为 random.shuffle() 期望它的第二个参数是一个函数:

      random.shuffle(x[, random])

      随机播放序列x

      可选参数 random 是一个 0 参数函数,返回 [0.0, 1.0) 中的随机浮点数;默认情况下,这是函数random()

      【讨论】:

        猜你喜欢
        • 2015-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-03
        • 2018-05-24
        • 2016-11-17
        • 1970-01-01
        相关资源
        最近更新 更多