Python帮助:查找重复

Python帮助:查找重复,python,arrays,list,matrix,repeat,Python,Arrays,List,Matrix,Repeat,我在下面的函数中,将字母“b”放置在矩阵中的某个位置。(我正在制作扫雷舰,这些“b”代表炸弹在矩阵中的位置)。我必须在函数中放入“z”炸弹,但炸弹放置的位置不能出现多次。我知道如何将它们放在函数中,但我无法确定它们是否在重复 from random import* mat1 = [] mat2 = [] def makemat(x): for y in range(x): list1 = [] list2 = [] for z in ra

我在下面的函数中,将字母“b”放置在矩阵中的某个位置。(我正在制作扫雷舰,这些“b”代表炸弹在矩阵中的位置)。我必须在函数中放入“z”炸弹,但炸弹放置的位置不能出现多次。我知道如何将它们放在函数中,但我无法确定它们是否在重复

from random import*

mat1 = []
mat2 = []
def makemat(x):
    for y in range(x):
        list1 = []
        list2 = []
        for z in range(x):
            list1.append(0)
            list2.append("-")
        mat1.append(list1)
        mat2.append(list2)
makemat(2)

def printmat(mat):
    for a in range(len(mat)):
        for b in range(len(mat)):
            print(str(mat[a][b]) + "\t",end="")  
        print("\t")

def addmines(z):
    for a in range(z):
        x = randrange(0,len(mat1))
        y = randrange(0,len(mat1))   
        mat1[y][x] = "b"            
addmines(4)                         

谢谢

也许我不明白这个问题,但为什么不检查一下“b”是否已经存在呢

def addmines(z):
for a in range(z):
    x = randrange(0,len(mat1))
    y = randrange(0,len(mat1))
    if mat1[y][x] == "b":
        addmines(1)
    else:
        mat1[y][x] = "b"
addmines(4)

你要做的是不更换样品。试用


如果网格中完全充满了地雷,您将得到一个
运行时错误
,因为您的递归太远了。谢谢,这与我要查找的非常接近。但在执行此操作时,它会一遍又一遍地重新打印矩阵,直到最后mat[y][x]!=“b”这是一个公平的问题,但你应该在问题的实际主体中描述你的问题,而不仅仅是标题(我认为这就是你被否决的原因)。
import random

...

def addmines(countMines):
    countRows = len(mat1)
    countCols = len(mat1[0])
    countCells = countRows * countCols

    indices = random.sample(range(countCells), countMines)

    rowColIndices = [(i // countRows, i % countRows) for i in indices]

    for rowIndex, colIndex in rowColIndices:
        mat1[rowIndex][colIndex] = 'b'