私の悪い英語のために申し訳ありません。行列を使って文字列を動的にフォーマットする方法は?
だから、私は、たとえば、マトリックスと文字列をフォーマットしようとしている:
matrix = [ ['x', 'y', 'z'], ['u', 'v', 'w'], ['r', 's', 't'] ]
string = "H{}ll{} W{}rld"
行列がどれだけ「{}」によって生成される文字列を持っています。アイデアは().formatを使用して、文字列内の各 '{}' の行列の各列を使用することである。
string.format(*matrix)
結果は:
H['x', 'y', 'z']ll['u', 'v', 'w'] W['r', 's', 't']rld
だから最善の解決策であった:
for i in range(0, len(matrix[0])) :
for j in range(0, len(matrix[1])) :
for k in range(0, len(matrix[2])) :
print(string.format(matrix[0][i], matrix[1][j], matrix[2][k]))
が、文字列とマトリックスは、このコードは無用作る変更することができるので、私はイテレータとして要素を使用するアレイを生成:
は、私は整形をした、イテレータの要素を反復処理する再帰的なコードを作った:
string.format(string.format(matrix[0][iterators[0]], matrix[1][iterators[1]], matrix[2][iterators[2]]))
その後、私はフォーマットをdinamicallyしようとした:
string.format(*matrix[*iterators])
これは働いていません(無効な構文エラー)、この作業を行う方法はありますか?私はすべてがはっきりしていることを望むありがとう。文字列のリストを生成することによって
string.format(*[''.join(line) for line in matrix])
まず、あなたはフラット行列:
に実装されていますか? "H ** xyz ** ll ** uvw ** W ** rst ** rld"? – EsotericVoid
'print [string.format(* m)for m in matrix]' ---> '['Hxlly Wzrld'、 'Hullv Wwrld'、 'Hrlls Wtrld']'のようなものです。行列の長さが変化するときに動作します。 – davedwards
これも試してみます –