Python 如何从二维列表中选择随机元素

Python 如何从二维列表中选择随机元素,python,python-2.7,nested-lists,Python,Python 2.7,Nested Lists,我试图在python的2D列表中选择一个随机元素。 我正在制作一个21点游戏 我知道这段代码有多长,而且没有经过优化,但我对编程还不熟悉,我想通过犯错误来学习 这是我设置的初始代码。我创造了黑桃,梅花,红桃,钻石。我将其附加到名为list_of_cards的列表中,该列表被初始化为空数组 然后我有另一个名为玩家卡的列表供玩家查看。这里是参考资料 这是随机卡的选择器。它将遍历数组以随机选择四张卡中的一张。接下来,它将进入该阵列并选择一张随机卡 我想弄明白的是:我如何每次创建一个新的随机数 我有点卡

我试图在python的2D列表中选择一个随机元素。 我正在制作一个21点游戏

我知道这段代码有多长,而且没有经过优化,但我对编程还不熟悉,我想通过犯错误来学习

这是我设置的初始代码。我创造了黑桃,梅花,红桃,钻石。我将其附加到名为list_of_cards的列表中,该列表被初始化为空数组

然后我有另一个名为玩家卡的列表供玩家查看。这里是参考资料

这是随机卡的选择器。它将遍历数组以随机选择四张卡中的一张。接下来,它将进入该阵列并选择一张随机卡

我想弄明白的是:我如何每次创建一个新的随机数

我有点卡住了,我试着把它放进一个for循环,但是如果我把随机的卡片号码放进一个循环,它会选择它最初四次选择的同一张随机卡片

srand使用时间作为第一个初始种子来创建随机数,因此每次运行程序时,您将获得不同的随机数,因为初始种子将随时间而变化

import random

list2d = [range(0, 5), range(5, 10), range(10, 15), range(15, 20)]

for i in range(0, 10):
    random_suite = random.choice(list2d)
    random_card = random.choice(random_suite)
    print random_suite, random_card                               
srand使用时间作为第一个初始种子来创建随机数,因此每次运行程序时,您将获得不同的随机数,因为初始种子将随时间而变化

import random

list2d = [range(0, 5), range(5, 10), range(10, 15), range(15, 20)]

for i in range(0, 10):
    random_suite = random.choice(list2d)
    random_card = random.choice(random_suite)
    print random_suite, random_card                               
输出:

[5, 6, 7, 8, 9] 7
[5, 6, 7, 8, 9] 5
[5, 6, 7, 8, 9] 5
[10, 11, 12, 13, 14] 11
[10, 11, 12, 13, 14] 13
[10, 11, 12, 13, 14] 12
[10, 11, 12, 13, 14] 14
[10, 11, 12, 13, 14] 10
[10, 11, 12, 13, 14] 10
[0, 1, 2, 3, 4] 2
输出:

[5, 6, 7, 8, 9] 7
[5, 6, 7, 8, 9] 5
[5, 6, 7, 8, 9] 5
[10, 11, 12, 13, 14] 11
[10, 11, 12, 13, 14] 13
[10, 11, 12, 13, 14] 12
[10, 11, 12, 13, 14] 14
[10, 11, 12, 13, 14] 10
[10, 11, 12, 13, 14] 10
[0, 1, 2, 3, 4] 2

在random.choice中输入的列表必须是1D数组。 所以你可以这样做

random_list_of_suits = np.random.choice(list_of_suits) # you can get spades/clubs/hearts/diamonds
index_of_random_card_number = random.choice(len(random_list_of_suits))
random_card = random_list_of_suits[index_of_random_card_number] # You get a random card 

在random.choice中输入的列表必须是1D数组。 所以你可以这样做

random_list_of_suits = np.random.choice(list_of_suits) # you can get spades/clubs/hearts/diamonds
index_of_random_card_number = random.choice(len(random_list_of_suits))
random_card = random_list_of_suits[index_of_random_card_number] # You get a random card 

将random.choicelist_of_suites放入循环中,不要传入变量。在更广泛的范围内,如果每张卡都是自描述性的,不是更好吗?您可以将它们都放在一张牌组列表中,只需将牌组洗乱,然后通过弹出列表从顶部取出一张卡?考虑做一些像黑桃= [亚齐奥斯黑桃,'黑桃',2,'黑桃',3,'黑桃'……]等所有的西装,然后把你的甲板放在一起。显然,如果你准备跳进OOP,就可以更大程度地控制它。但我认为这是影响最大的最小变化。将random.choicelist_of_suits放入循环中,不要传入变量。在更广的范围内,如果每张牌都是自描述性的,不是更好吗?你可以将它们全部放入一张牌组列表中,然后洗牌,然后通过弹出列表从顶部取出一张牌组?考虑做一些像黑桃= [亚齐奥斯黑桃,'黑桃',2,'黑桃',3,'黑桃'……]等所有的西装,然后把你的甲板放在一起。显然,如果你准备跳进OOP,就可以更大程度地控制它。但我认为这是影响最大的最小更改。我认为您可能在错误的问题上发布了此内容?答案需要使用Python。我认为您可能在错误的问题上发布了此内容?答案需要使用Python