2013-12-12 19 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