2013-12-12 20 views
1

我想在python中做一个数组的数组,但没有成功,所以我认为这对我来说更容易使用换行符列表。新行登录名单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',我想它做一个列表中的新行。

我该怎么办?

谢谢你在前进,Iliya :)

+1

这不会很好地工作类型。我想你应该用清单列表来回答你的问题。 – RemcoGerlich

+1

你好。请看我的答案。顺便说一句,我的建议是:不要急于求助和接受答案,急于获得积分的人的快速答案不是最好的答案。 – eyquem

回答

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

当然不是打印代表名单 ...

print ''.join(board) 
+0

非常感谢你解决了我的问题! 我会在10分钟内接受你的回答,它现在不允许我:< –

0

您正在打印一个列表。它会看起来像。如果您将其打印为字符串,“\ n”将起作用。 请尽量

打印“”。加入(板)

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

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

为什么你得到这样的显示为您展示的是,当一个print声明是为了打印对象obj,该方法obj.__str__被调用,以获得可以在屏幕上写一个字符串的原因之一。
然后,在你的情况下,它被称为board.__str__()

事实是,所述元件'\n'是一个字符,但'\n'board所有的元素不是一个串的元素:它们是一个列表的元素和__str__是这样的列表的元素列表作为内部表示从__repr__获得的字符串(请参阅此方法的文档及其与__str__的差异)
更准确地了解由print语句执行的过程需要检查语句print的代码,但我认为它不在Python代码中但在C代码(我想,我不是很能够在这一点上)

也就是说,我认为你想获得的是这样的显示:

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

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 

NB
在Python一个array目的是an object of this type
数组的元素全部具有相同的约束类型,其不能是array的类型。因此,作为数组数组的对象在Python中意味着什么。

NB2
现在使用board的上述定义,问题是元素只能是长度为2的字符串,第二个字符为空。
有一些解决方案可以管理元素不是字符串,长度可变的情况,但它变得非常复杂。
这就是为什么numpy的库已经建立,以允许阵列呈现感谢的操控方便到一个名为ndarray