【问题标题】:How do I change a single letter in a grid (array of strings)?如何更改网格(字符串数组)中的单个字母?
【发布时间】:2019-07-26 02:07:42
【问题描述】:

对于数字网格的给定输入,将一个数字更改为字母(在我的例子中是“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"

是我想要完成的想法......我该如何正确地做到这一点?

【问题讨论】:

  • 您最好提供您要实现的功能的输入和输出示例。所以其他人可以更容易地提供帮助。

标签: python string list


【解决方案1】:

试试这个:

grid[i] = grid[i][:j] + "X" + grid[i][j+1:]

附带说明,您还应该更改以下行:

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

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

【讨论】:

  • 对于 ``` for j in range(len(grid[i])) 的好点:``` 只是一个好习惯;就我的目的而言,它只是一个方形网格,所以没关系。使用您的方法,在您执行 grid[i][:j] + "X" + grid[i][j+1:] 方法后,for 循环是否仍然可以移动到下一个 j?
  • 是的,您没有理由不能使用此方法执行多个替换。
【解决方案2】:

你可以看到Python: String replace index,如果你想把它们保留为str

如果你真的想将字符串列表转换为列表列表,可以使用

for i in range(len(grid)):
    gird[i] = list(grid[i])

那你就可以grid[i][j] = "X"

因为任何可迭代对象都可以使用list(iterable) 直接转换为列表。

转换回来:

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

【讨论】:

  • 如何在二维数组的上下文中做到这一点? (即想改变 grid[0][i] = "X")
  • 虽然信息正确,但这并不能回答问题。
  • 我刚刚编辑了我的答案。我是一个新的贡献者,如果我犯了一些错误,请告诉我。顺便说一句,称它为二维数组是不正确的。准确地说,它是一个列表列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-16
  • 2011-08-30
  • 2011-10-05
  • 1970-01-01
  • 2014-01-16
相关资源
最近更新 更多