簡體   English   中英

更改網格中多個部分的值(字符串列表?)

[英]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.

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