0
我寫了下面的代碼位插入功能:的Python:「行爲不端」的循環
...
for x in range(len(coeff)): coeff[x].insert(0,names[x])
coeff.insert(0,['Center','c1','c2','c3'])
print_matrix(coeff)
...
的print_matrix
功能只是打印從一個元組[ROW1]一個很好的矩陣,ROW2],[等等...]]。 我的coeff = [[1,2,3],[4,5,6]]
和我的names = ['A,'B']
。
我第一次運行該功能,我得到:
coeff = [['Center','c1','c2','c3'],['A',1,2,3],[B,4,5,6]]
+----------------------+
| Center c1 c2 c3 |
| A 1 2 3 |
| B 4 5 6 |
+----------------------+
這正是我想要的。當我運行相同的(複製和粘貼)腳本只是後的第一個類似的方式打印另一張元組basis = [[7,8,9],[10,11,12]]
的問題開始:
...
del x
for x in range(len(basis)): basis[x].insert(0,names[x])
basis.insert(0,['Center','A1','A2','A3'])
print_matrix(basis)
...
然後我得到:
basis = [['Center','A1','A2','A3'],['A','B',7,8,9],['A','B',10,11,12]]
和錯誤從print_matrix
函數,因爲它沒有得到具有相等長度行的元組。爲什麼?
不循環的指數 - 它的速度慢,難以閱讀,僵化。對於範圍內的x(len(coeff)):coeff [x] .insert(0,names [x])''變成''x,zip中的名字(coeff,names):x.insert(0,name)'' 。你也應該避免使用一行循環 - 這會使代碼更難閱讀。如果你總是插入到前,你可能想用['collections.deque'(http://docs.python.org/3.3/library/collections.html?highlight=deque#collections.deque)和''deque.appendleft()'也可以在列表和'list.insert()'上。 –
@Lattyware謝謝你的語法修正。它現在更清潔,但它仍然不起作用。結果與我的環路設計完全一樣。我現在要去嘗試'deque'。 – MarcinKonowalczyk
我提出的兩件事都不會改變程序的功能,它們只是更好的方式來做你正在做的事情。 –