如何通过实际混洗所有元素来混洗列表列表?

问题描述

import random
row = ['\u2665','\u2663','\u2666','\u2660']  # ["Hearts","Clubs","Diamonds","Spades"]
symbol = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
level = input('Choose Difficulty level: Easy (1),Medium (2),Hard (3): ')
while level!="1" and level!="2" and level!="3":
   level = (input('Choose Difficulty level: Easy (1),Hard (3): '))
if level == "1":
   col=4
elif level== "2":
   col=10
else:
   col=1

def value(symbol):
  if symbol=="A":
    return 1
  elif symbol=="Q" or symbol=="J" or symbol=="K":
    return 10
  else:
    return int(symbol)

deck =[]
for i in range(len(row)):
  deck.append([])
  for j in range(col):
     card = [symbol[j],row[i],value(symbol[j]),str(symbol[j])+str(row[i]),False]
     deck.append(card)

我有这个代码,我想洗牌。

但是函数 shuffle.random(deck) 只洗牌了 4 行...

我想创建一个只有卡片的新列表并对其进行洗牌,但后来​​我不知道如何将其设为 4 行 4 或 10 或 13 列的列表。

任何想法和建议都是有价值的!

解决方法

使用random.shuffle(inp)

创建一个递归函数:如果 inputlist 洗牌它,否则,离开它

由于列表是可变的,所以一切都在原地

无论您的列表如何嵌套,一切都会被打乱

import random
inp_list = [1,[2,3,4,[5,6,7],8,9],[10,11]]
def shuffle_list(inp):
    if type(inp) is list:
        random.shuffle(inp)
        for i in inp:
            shuffle_list(i)
shuffle_list(inp_list)
print(inp_list)
[1,[11,10],[8,[7,5,6],9,2,4]]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...