[英]Changing the values in multiple parts of a grid (list of strings?)
我正在建立一個10乘10的0
s網格。 我希望能夠通過if語句將(例如)前5行更改為“ ONE”。
在不針對每個0
情況下進行此操作的最佳方法是什么?
我嘗試做一些類似grid[:5][:5]
來針對多個0
s,但這沒有任何作用。
grid = [[0 for x in range(10)] for y in range(10)]
number = 1
if number is 1:
grid[:5][:5] = "ONE"
for row in grid:
print(" ".join(map(str, row)))
您可以使用兩個嵌套的for
循環:
for row in range(5):
for col in range(10):
grid[row][col] = 'ONE'
當grid [:5] [:5]返回一個新列表時,更改新列表不會產生所需的結果。
grid = [[0]*10 for x in range(10)] #pythonic way of making a list/list of list (grid)
number = 1
if number == 1:
for x in xrange(5):
for y in xrange(10):
grid[x][y] = "ONE"
print(grid)
輸出:
[['ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE'],
['ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE'],
['ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE'],
['ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE'],
['ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE', 'ONE'],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
您也可以在list comprehension
做到這一點:
grid = [[0 for x in range(10)] for y in range(10)]
number = 1
if number == 1:
grid = [["ONE" if y <5 else 0 for x in range(10)] for y in range(10)]
for k in grid:
print(" ".join(map(str,k)))
輸出:
ONE ONE ONE ONE ONE ONE ONE ONE ONE ONE
ONE ONE ONE ONE ONE ONE ONE ONE ONE ONE
ONE ONE ONE ONE ONE ONE ONE ONE ONE ONE
ONE ONE ONE ONE ONE ONE ONE ONE ONE ONE
ONE ONE ONE ONE ONE ONE ONE ONE ONE ONE
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.