Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 替换列表列表中的字符_Python - Fatal编程技术网

Python 替换列表列表中的字符

Python 替换列表列表中的字符,python,Python,我启动了一个suduko项目,需要将列表“board”中的所有0替换为“”。 为什么它不起作用 我得到这个错误: AttributeError: 'list' object has no attribute 'replace' 我的代码: board = [[3,7,0,0,5,0,0,0,0], [0,6,0,0,3,0,2,0,0], [0,2,9,4,0,0,0,7,8], [0,0,4,1,7,0,0,8,0],

我启动了一个suduko项目,需要将列表“board”中的所有0替换为“”。 为什么它不起作用

我得到这个错误:

AttributeError: 'list' object has no attribute 'replace'
我的代码:

board = [[3,7,0,0,5,0,0,0,0],
         [0,6,0,0,3,0,2,0,0],
         [0,2,9,4,0,0,0,7,8],
         [0,0,4,1,7,0,0,8,0],
         [0,0,6,3,0,5,9,0,0],
         [0,5,0,0,8,4,1,0,0],
         [7,1,0,0,0,8,5,6,0],
         [0,0,5,0,1,0,0,2,0],
         [0,0,0,0,9,0,0,1,3]]

def print_board(board):
    pass
    a=-1
    board=board.replace(0, " ")
    for i in board:
        a+=1

        if a%3==0:

            print 25*"*"+""
            print "*",i[0],i[1],i[2],"*",i[3],i[4],i[5],"*",i[6],i[7],i[8],"*"

        else:
            print "*",i[0],i[1],i[2],"*",i[3],i[4],i[5],"*",i[6],i[7],i[8],"*"
    print 25*"*"+""

尝试以下方法,使用列表理解:

In [10]: board
Out[10]: 
[[3, 7, 0, 0, 5, 0, 0, 0, 0],
 [0, 6, 0, 0, 3, 0, 2, 0, 0],
 [0, 2, 9, 4, 0, 0, 0, 7, 8],
 [0, 0, 4, 1, 7, 0, 0, 8, 0],
 [0, 0, 6, 3, 0, 5, 9, 0, 0],
 [0, 5, 0, 0, 8, 4, 1, 0, 0],
 [7, 1, 0, 0, 0, 8, 5, 6, 0],
 [0, 0, 5, 0, 1, 0, 0, 2, 0],
 [0, 0, 0, 0, 9, 0, 0, 1, 3]]

In [11]: board=[[x if x!=0 else " " for x in i] for i in board]

In [12]: board
Out[12]: 
[[3, 7, ' ', ' ', 5, ' ', ' ', ' ', ' '],
 [' ', 6, ' ', ' ', 3, ' ', 2, ' ', ' '],
 [' ', 2, 9, 4, ' ', ' ', ' ', 7, 8],
 [' ', ' ', 4, 1, 7, ' ', ' ', 8, ' '],
 [' ', ' ', 6, 3, ' ', 5, 9, ' ', ' '],
 [' ', 5, ' ', ' ', 8, 4, 1, ' ', ' '],
 [7, 1, ' ', ' ', ' ', 8, 5, 6, ' '],
 [' ', ' ', 5, ' ', 1, ' ', ' ', 2, ' '],
 [' ', ' ', ' ', ' ', 9, ' ', ' ', 1, 3]]
board = [[3,7,0,0,5,0,0,0,0],
         [0,6,0,0,3,0,2,0,0],
         [0,2,9,4,0,0,0,7,8],
         [0,0,4,1,7,0,0,8,0],
         [0,0,6,3,0,5,9,0,0],
         [0,5,0,0,8,4,1,0,0],
         [7,1,0,0,0,8,5,6,0],
         [0,0,5,0,1,0,0,2,0],
         [0,0,0,0,9,0,0,1,3]]

board = [[x if x else ' ' for x in line] for line in board]

board = [[3,7,' ',' ',5,' ',' ',' ',' '],
         [' ',6,' ',' ',3,' ',2,' ',' '],
         [' ',2,9,4,' ',' ',' ',7,8],
         [' ',' ',4,1,7,' ',' ',8,' '],
         [' ',' ',6,3,' ',5,9,' ',' '],
         [' ',5,' ',' ',8,4,1,' ',' '],
         [7,1,' ',' ',' ',8,5,6,' '],
         [' ',' ',5,' ',1,' ',' ',2,' '],
         [' ',' ',' ',' ',9,' ',' ',1,3]]

您可以使用列表:

In [10]: board
Out[10]: 
[[3, 7, 0, 0, 5, 0, 0, 0, 0],
 [0, 6, 0, 0, 3, 0, 2, 0, 0],
 [0, 2, 9, 4, 0, 0, 0, 7, 8],
 [0, 0, 4, 1, 7, 0, 0, 8, 0],
 [0, 0, 6, 3, 0, 5, 9, 0, 0],
 [0, 5, 0, 0, 8, 4, 1, 0, 0],
 [7, 1, 0, 0, 0, 8, 5, 6, 0],
 [0, 0, 5, 0, 1, 0, 0, 2, 0],
 [0, 0, 0, 0, 9, 0, 0, 1, 3]]

In [11]: board=[[x if x!=0 else " " for x in i] for i in board]

In [12]: board
Out[12]: 
[[3, 7, ' ', ' ', 5, ' ', ' ', ' ', ' '],
 [' ', 6, ' ', ' ', 3, ' ', 2, ' ', ' '],
 [' ', 2, 9, 4, ' ', ' ', ' ', 7, 8],
 [' ', ' ', 4, 1, 7, ' ', ' ', 8, ' '],
 [' ', ' ', 6, 3, ' ', 5, 9, ' ', ' '],
 [' ', 5, ' ', ' ', 8, 4, 1, ' ', ' '],
 [7, 1, ' ', ' ', ' ', 8, 5, 6, ' '],
 [' ', ' ', 5, ' ', 1, ' ', ' ', 2, ' '],
 [' ', ' ', ' ', ' ', 9, ' ', ' ', 1, 3]]
board = [[3,7,0,0,5,0,0,0,0],
         [0,6,0,0,3,0,2,0,0],
         [0,2,9,4,0,0,0,7,8],
         [0,0,4,1,7,0,0,8,0],
         [0,0,6,3,0,5,9,0,0],
         [0,5,0,0,8,4,1,0,0],
         [7,1,0,0,0,8,5,6,0],
         [0,0,5,0,1,0,0,2,0],
         [0,0,0,0,9,0,0,1,3]]

board = [[x if x else ' ' for x in line] for line in board]

board = [[3,7,' ',' ',5,' ',' ',' ',' '],
         [' ',6,' ',' ',3,' ',2,' ',' '],
         [' ',2,9,4,' ',' ',' ',7,8],
         [' ',' ',4,1,7,' ',' ',8,' '],
         [' ',' ',6,3,' ',5,9,' ',' '],
         [' ',5,' ',' ',8,4,1,' ',' '],
         [7,1,' ',' ',' ',8,5,6,' '],
         [' ',' ',5,' ',1,' ',' ',2,' '],
         [' ',' ',' ',' ',9,' ',' ',1,3]]

或者您可以使用
map()
map(lambda行:[x if x else''表示x in line],board)

甚至错误也非常清楚地表明:
列表没有名为replace的属性,
replace()
用于字符串而不是列表。哎呀。。还有另一种替换方法吗?
replace
是一个字符串方法——所以列表没有这个方法。您可能需要列表理解或地图。我可以只使用更改术语吗?我可以执行“board=[[“”如果0代表x行]代表board行]”?@user1562379不可以,这是错误的。我的答案有什么问题?没有错,但是告诉python保持num不变似乎是无用的。所以我想我可以告诉他我想更改的数值顺便说一下,在打印完上面的函数后,我怎么能在函数中添加一个返回值,这样就不会发生了@阿什维尼Chaudhary@user1562379将正在打印的所有内容累积到列表中,并返回
返回'\n'。加入(lis)