【问题标题】:Replacing one number with another in PYTHON在 PYTHON 中用另一个数字替换一个数字
【发布时间】:2016-11-19 11:02:07
【问题描述】:

我已经声明了一个 10*10 的板子数组。我正在读取板子的 0、1 和 2 元素。读完后我的板子看起来有点像这样(较短的版本 4*4)

   0  1  0  2 
   2  1  0  1 
   0  2  1  0 
   1  2  1  0 

代码:

board = [] 
for i in xrange(0, 10) 
    board.append(raw_input()) 

现在我想将所有出现的 0 更改为 1。我无法更改它..我该怎么办..请编写修改后的代码..(将错误视为不可变)

感谢您更改的答案。我应该先将列表转换为字符串,然后使用替换功能

【问题讨论】:

  • 请向我们展示您的代码,您现在如何尝试更改它。你得到了什么确切的错误?

标签: python arrays string character


【解决方案1】:

据我了解,您有一个列表,只是想用 1 替换所有 0 对吗?如果是这样,您可以尝试将该列表转换为字符串并使用replace 方法。喜欢:board = str(board),然后是board = board.replace('0','1')。然后使用eval 内置函数转换回列表。但这对于大型列表来说可能太慢了。

UPDATE >> 如果你不想使用字符串,你也可以这样编码: 如果是二维列表,例如:L = [[1, 1, 0], [0, 2, 1], [0, 0, 0]],则:

for x in L:
    for y in x:
        if y == 0:
            x[x.index(y)] = 1

如果它只是像L = [1, 0, 2, 1, 0, 1] 这样的普通列表,那么:

for x in L:
    if x == 0:
        L[L.index(x)] = 1

【讨论】:

  • OP 将不得不添加一些代码,所以我们都知道,但它看起来更多,就像它是相反的方式:Un"string"ify and work on real "states" a 2d array like游戏板的模式。
【解决方案2】:
for i in xrange(10):
    for j in xrange(10):
        if board[i][j] == 0:
            board[i][j] = 1

这应该可行。如果没有,请告诉我你是如何创建board 表的。

【讨论】:

  • 感谢您的回复。它不工作。我将输入作为 board.append(raw_input()) 中的 10 行字符串。即使输入是数字,我也不想更改输入格式并希望将其保留为字符串本身
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-08
  • 2011-08-21
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
相关资源
最近更新 更多