0

次のコードを書きました。

...
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],[etc...]] から適切な行列を出力するだけです。私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同じ長さの行を持つタプルを取得しないため、関数からのエラー。なんで?

4

1 に答える 1

0

わかりました、私はそれを解決しました。起こったことはbasis、最初に構築された方法が機能に影響を与えたということでした。例として乱数を与えただけですbasisが、実際には (コードの奥深く) でした:

coordinates = [...,[1,2,3],...]
coordinates[7] = [1,2,3] # Or something like that
basis = []
basis.append(coordinates[7])
...
basis.append(coordinates[7])

insert(0,something)onを実行するとbasis[0]、要素も に挿入されbasis[1]ます。

動作するコードのストリップは次のとおりです。

...
basis_clone = [[y for y in basis[x]] for x in range(len(basis))]
for y, name in zip(basis_clone,orbital_center_names): y.insert(0,name)
basis_clone.insert(0,['Center','A1','A2','A3'])
print_matrix(basis_clone) ; sleep(0.1)
...

ここに記載されている方法はどれも機能しなかったため、私が行った方法でベースを複製する必要がありました. ただし、それを行うためのより良い方法の提案を受け付けています。

PS: @Lattyware に、適切な構文についてのヘルプをありがとう。

于 2013-07-17T11:10:21.017 に答える