Python 如何更改网格(字符串数组)中的单个字母?

Python 如何更改网格(字符串数组)中的单个字母?,python,string,list,Python,String,List,对于给定的数字网格输入,在我的例子中,将一个数字更改为一个字母X,然后返回相同网格的最佳方式是什么 以下是我们无法触及的代码-如何处理输入: grid = [] for _ in range(n): grid_item = input() grid.append(grid_item) 对于我们的函数,我们把这个网格作为我们的参数 网格将看起来像 246 345 159 我想把一个数字,比如中间的4,改成X 我知道我做不到 grid[1][1] = "X" 因为输入是一个字符

对于给定的数字网格输入,在我的例子中,将一个数字更改为一个字母X,然后返回相同网格的最佳方式是什么

以下是我们无法触及的代码-如何处理输入:

grid = []
for _ in range(n):
    grid_item = input()
    grid.append(grid_item)
对于我们的函数,我们把这个网格作为我们的参数

网格将看起来像

246
345
159
我想把一个数字,比如中间的4,改成X

我知道我做不到

grid[1][1] = "X"
因为输入是一个字符串。我想我必须先把它改成一个列表,然后再改成X,然后再改回字符串

但是假设我必须写一个函数,它将遍历网格-

for i in range(len(grid)):
    for j in range(len(grid[0])):
        if blahblah:
             grid[i][j] = "X"
这是我想要实现的目标的想法……我如何才能正确地完成它?

试试这个:

grid[i] = grid[i][:j] + "X" + grid[i][j+1:]
作为旁注,您还应更改以下行:

for j in range(len(grid[0])):

你可以看到,如果你想把它们保留为str

如果确实要将字符串列表转换为列表列表,可以使用

for i in range(len(grid)):
    gird[i] = list(grid[i])
然后,你可以做grid[i][j]=X

因为任何iterable对象都可以使用listiterable直接转换为列表

要转换回:

for i in range(len(grid)):
    gird[i] = ''.join(grid[i])

您最好提供要实现的函数的输入和输出示例。因此,其他人可以更容易地提供帮助。在二维数组的上下文中,我将如何做到这一点?i、 e.要更改网格[0][i]=X尽管信息正确,但这并不能回答问题。我刚刚编辑了我的答案。我是一个新的投稿人,如果我犯了一些错误,请告诉我。顺便说一下,将其称为2d数组是不正确的。确切地说,这是一个列表列表。对于rangelengrid[i]中的j来说,这是一个很好的观点:``只是一个很好的实践;就我而言,它只是一个正方形的网格,所以很好。使用您的方法,在执行grid[i][:j]+X+grid[i][j+1:]方法后,for循环是否仍能运行到下一个j?是的,没有理由不能使用此方法执行多次替换。
for i in range(len(grid)):
    gird[i] = ''.join(grid[i])