簡體   English   中英

使用隨機數在python中創建二維列表。

[英]Creating 2-D list in python using random numbers.

import random

rows = 3
cols = 3 
virus = [0,0,0,0,0,1,2]
virus_level = random.choice(virus) 
first_gen = []
row =[]
for rownum in range(rows):
    for colnum in range(cols):
        virus_level = random.choice(virus)
        row.append(virus_level)
    first_gen.append(row)

我需要使用列表病毒中的隨機數創建一個二維列表。 到目前為止,這是我所擁有的,數字不是按隨機順序排列的,列表顯示為9乘3,而不是3乘3。某些指向正確方向的指針會很好。

您對row[]賦值應該在最外層循環中,如下所示:

import random

rows = 3
cols = 3
virus = [0,0,0,0,0,1,2]
virus_level = random.choice(virus)
first_gen = []
for rownum in range(rows):
    row = []
    for colnum in range(cols):
        virus_level = random.choice(virus)
        row.append(virus_level)
    first_gen.append(row)

但是,我更喜歡將列表推導用於這類事情。 這是一個替代方案:

from pprint import pprint
import random

rows = 3
cols = 3
virus = [0,0,0,0,0,1,2]

first_gen = [[random.choice(virus) for _ in range(rows)] for _ in range(cols)]
pprint (first_gen)

這可以解決問題:

>>> import random
>>> rows=3
>>> cols=3
>>> virus=[0,0,0,0,0,1,2]
>>> [[random.choice(virus) for r in range(rows)] for c in range(cols)]
[[0, 2, 2], [0, 0, 0], [0, 0, 0]]

您需要在每個循環上重置row

以您的代碼段為准,如果僅將row =[]行放在外部循環中,則應該可以得到正確的結果。

import random

rows = 3
cols = 3 
virus = [0,0,0,0,0,1,2]
virus_level = random.choice(virus) 
first_gen = []
for rownum in range(rows):
    row = []    
    for colnum in range(cols):
        virus_level = random.choice(virus)
        row.append(virus_level)
    first_gen.append(row)

print first_gen  # [[2, 0, 0], [0, 0, 0], [1, 0, 0]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM