![](/img/trans.png)
[英]When I print my list instead of using the names in the list the output shows the index numbers. Python 2D-Lists
[英]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.