Skip to main content
 首页 » 编程设计

python之如何从二维列表中选择一个随机元素

2025年05月04日7qlqwjy

我试图在 python 的二维列表中选择一个随机元素。 我正在创建一个二十一点游戏。

I'm aware of how long and non-optimized this code is, but I'm new to programming and I want to make mistakes to learn.

Here's the initial code that I have set up. I create the suits (spades, clubs, hearts, diamonds). I append it to the list called list_of_cards which was initialized as an empty array.

Then I have another list called player_card for the player to view. Here it is in reference.

list_of_suits= []       #Creating list of cards 
player_card  = [] 
 
king_of_spades  =  10   #Creating face cards for the spades deck. 
queen_of_spades =  10    
jack_of_spades  =  10 
 
king_of_clubs  =  10    
queen_of_clubs =  10       
jack_of_clubs  =  10 
 
king_of_hearts  =   10    
queen_of_hearts =   10     
jack_of_hearts  =   10 
 
king_of_diamonds  =  10    
queen_of_diamonds =  10  
jack_of_diamonds  =  10 
 
ace_of_spades =   [1,11]     # Aces are either 1 or 11 
ace_of_clubs =    [1,11] 
ace_of_hearts =   [1,11] 
ace_of_diamonds = [1,11]  
 
 
spades = [ace_of_spades,2,3,4,5,6,7,8,9,10, jack_of_spades, queen_of_spades, king_of_spades] 
clubs =  [ace_of_clubs,2,3,4,5,6,7,8,9,10, jack_of_clubs, queen_of_clubs, king_of_clubs] 
hearts =  [ace_of_hearts,2,3,4,5,6,7,8,9,10, jack_of_hearts, queen_of_hearts, king_of_hearts] 
diamonds =  [ace_of_diamonds,2,3,4,5,6,7,8,9,10, jack_of_diamonds, queen_of_diamonds, king_of_diamonds] 
 
list_of_suits.append(spades) 
list_of_suits.append(clubs) 
list_of_suits.append(hearts) 
list_of_suits.append(diamonds) 

This is the selector for a random card. It will iterate through the array to select one of the four cards randomly. Next, it will go into that array and choose a random card.

random_list_of_suits = random.choice(list_of_suits) 
 
random_card_number = random.choice(random_list_of_suits)     
random_list_of_suits.remove(random_card_number) 
player_card.append(random_card_number) 
 
print player_card 
print list_of_suits 

Here's what I'm trying to figure out: How do I create a new random number each time?

I'm kind of stuck and I tried putting it through a for loop, but if I put the random_card_number in a loop, it will select the same random card that it did initially four times.

请您参考如下方法:

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