繁体   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