我有一個填充 0 值的矩陣,我想將 1 值隨機添加到 a 和 a 1 位置。然后我想對下一行使用 b 和 b 1 ......等等。我該怎么做?
w, h = 10, 3
Matrix = [[0 for x in range(w)] for y in range(h)]
a = random.randint(0,9)
b = random.randint(0,9)
c = random.randint(0,9)
print(a, b, c)
例子:
a = 5 b = 2 c = 1
0000011000
0011000000
0110000000
uj5u.com熱心網友回復:
你應該降低randint至8(更一般地w-2),或者使用randrange這樣你就不會越過該行的邊緣用 1。
然后在每一行上回圈,生成數字并使用數字作為索引更改該行:
import random
w, h = 10, 3
matrix = [[0 for x in range(w)] for y in range(h)]
for row in matrix:
i = random.randrange(w-1)
print(i)
row[i:i 2] = [1, 1]
print(*matrix, sep='\n')
會給:
0
8
2
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 1, 1]
[0, 0, 1, 1, 0, 0, 0, 0, 0, 0]
uj5u.com熱心網友回復:
在 Python 中的矩陣中,您可以使用 [] 訪問行,使用 [][] 訪問列,
所以如果你想要第二行中的第三個專案,那就是 [1][2] 注意我們從 0 開始。
回到你的問題,它看起來像這樣,
Matrix[0][a] = 1
Matrix[0][a 1] = 1
b、c 依此類推,但您也可以使用回圈。
random = [a, b, c]
for row in range(h):
Matrix[row][random[row]] = 1
Matrix[row][random[row] 1] = 1
基本上我們在這個回圈中所做的,是針對矩陣中的每一行,在您的代碼中由 h 定義,我們將查看第一行并定義隨機值 'a' 的索引并將其更新為1. 然后我們將轉到同一行中的 'a 1' 并將其更新為 1。然后對于下一行,我們將取 b 并執行相同的操作。
注意:如果 a、b 或 c 為 9,這將引發錯誤,因為一旦將其增加 1,您將超出串列的邊界,即 0 到 9
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/352681.html
標籤:Python
