新行登录列表Python

时间:2013-12-12 10:10:39

标签: python list newline

我正在尝试在python中创建一个数组数组但是没有成功,所以我认为使用包含换行符的列表会更容易。

我正在做的是:

board = []
for i in range(10):
    for j in range(10):
        board.append("0 ")
    board.append("\n")
print board

但是当打印出来时,就会出现

['0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '\n', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '\n', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '\n', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '\n', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '\n', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '\n', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '\n', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '\n', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '\n', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '0 ', '\n']

我不希望'\n'显示为'\n',我希望它在列表中添加新行。

我该怎么办?

提前谢谢你,伊利亚:)

5 个答案:

答案 0 :(得分:2)

像往常一样,伊格纳西奥并没有试图超越简洁。

您获得所显示的显示的原因是,当执行print语句以打印对象obj时,调用方法obj.__str__以获取可以写在显示屏上的字符串。
然后,在您的情况下,调用board.__str__()

事实是元素'\n'是一个字符,但'\n'中的所有元素board都不是字符串的元素:它们是列表的元素,{{1}这样列表的元素在列表中表示为从__str__获得的字符串(请参阅此方法的文档及其与__repr__的区别)
更准确地理解__str__语句执行的过程需要检查语句print的代码,但我认为它不是在Python代码中而是在C代码中(我想,我是在这一点上不是很有能力)

那就是说,我认为您想要获得的是这样的显示:

print

无需在列表中放置一些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 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 字符即可获得此显示。相反,这样做:

'\n'

结果

board = []
for i in range(100):
    board.append('0 ')
# or better: board = ['0 ' for i in range(100)]
print '\n'.join(''.join(board[i:i+10]) for i in xrange(0,100,10))

print

board[6] = '4 '
board[18] = 'A '
board[30] = '9 '
board[77] = 'X '
print '\n'.join(''.join(board[i:i+10]) for i in xrange(0,100,10))

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

NB
在Python中,0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 A 0 0 0 0 0 0 0 0 0 0 0 9 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 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 对象是an object of this type
数组的元素具有所有相同的约束类型,不能是array的类型。因此,作为数组数组的对象在Python中没有任何意义。

NB2
现在使用上面的array定义,你会遇到这样的问题,即元素只能是长度为2的字符串,第二个字符为空白。
有一些解决方案来管理元素不是字符串,长度可变的情况,但它变得非常复杂 这就是为什么创建了 Numpy 库,以便通过名为board

的类型轻松操作数组表示

答案 1 :(得分:1)

当然不是通过打印列表的表示 ...

print ''.join(board)

答案 2 :(得分:1)

如果你想要一个充满0的数组数组(或者在这种情况下是一个列表列表),你可以使用:

board = [[0]*10 for i in range(10)] # Generate 10 lists filled with 10 0's each.

for x in board:
    print x # Print out each [0,0,...0,0] on a new line.

答案 3 :(得分:0)

您正在打印列表。它看起来就像它。如果您将其打印为字符串,“\ n”将起作用。 请尝试

print“”。join(board)

答案 4 :(得分:0)

如果您想查看新行使用列表,请不要附加'\ n'

以下是样本:

board = []
for i in range(10):
    temp = []
    for j in range(10):
        temp.append("0 ")
    board.append(temp)

for i in board:
    print ''.join(i)