我正在尝试在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'
,我希望它在列表中添加新行。
我该怎么办?
提前谢谢你,伊利亚:)
答案 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)