【问题标题】:How to get a random choice back from select nested lists?如何从选择的嵌套列表中获得随机选择?
【发布时间】:2020-10-23 15:39:27
【问题描述】:

我有一个简单的嵌套变量列表,其中包含 6 个玩家姓名。如下所示。

player_options = [[person_1, person_2],[person_3, person_4], [person_5, person_6]]

我想得到的是第一个嵌套的随机变量,然后是第二个或第三个嵌套的随机变量。我目前可以从第一个巢和第二个 OR 第三个中随机选择一个,但不能从第二个 AND 第三个?

我目前拥有的代码是

pair_1 = random.choice(player_options[0]) + random.choice(player_options[1]) 

我将如何从嵌套 [0] 中随机选择和从嵌套 [1] 或 [2] 中随机选择?

如果您需要更多信息,请告诉我!

谢谢:)

【问题讨论】:

    标签: python python-3.x list nested-lists


    【解决方案1】:

    如果您希望列表 2 和 3 中所有玩家的概率一致,您可以为此连接列表:

    pair_1 = random.choice(player_options[0]) + random.choice(player_options[1] + player_options[2]) 
    

    如果您想首先在列表之间进行 50%-50% 的拆分选择,然后在所选列表中统一,您可以链接 2 个 choice 调用,例如:

    pair_1 = random.choice(player_options[0]) + random.choice(random.choice(player_options[1:3])) 
    

    请注意,如果它们的长度不同,它们会为列表 2 和 3 的成员产生不同的被选中概率。所以你应该选择一个适合你的目的。

    【讨论】:

    • 这适用于您刚刚进行的编辑!我首先得到了 S. Ferard 的回答,但这也有效!非常感谢
    【解决方案2】:

    怎么样

    biggest_index = len(player_options) - 1 # Get the biggest/last index
    second_choice = random.randint(1,biggest_index) # Chose a random index between the second (1) and the last one
    pair_1 = random.choice(player_options[0]) + random.choice(player_options[second_choice]) 
    

    或者第二次使用选择函数两次:

    second_choice = random.choice(player_options[1:]) # Choose random element after first index
    pair_1 = random.choice(player_options[0]) + random.choice(second_choice) 
    

    【讨论】:

    • 不幸的是,由于我计划制作的后续步骤,我无法将其更改为其他列表。通常这就是 id 所做的,不过谢谢!
    【解决方案3】:

    您可以简单地加入最后两个嵌套并在加入的列表中进行随机选择。

    pair_1 = random.choice(player_options[0]) + random.choice(player_options[1]+player_options[2]) 
    

    【讨论】:

    • 这完全符合我的要求,非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多