実現したいこと
こちらの関連質問です。
parameters.txtは以下のようなファイルです。
1 #ic[1] 2 #ic[2] 3 #xmin[0] 4 #xmin[1] 5 #xmin[2]
「該当のソースコード」の7行目のように読み込むことはできました。真似して、11行目のように書けると便利なのですが、「発生している問題・エラーメッセージ」が出ました。解決法を教えてください。
あと、別件ですが、7行目の出力が
[0, np.float64(1.0), np.float64(2.0)]
ではなく、単に
[0, 1, 2]
とする方法も教えてください。
発生している問題・エラーメッセージ
複数の*が付いている表現はダメだと言われているようです。
File "〇〇〇\testCV544.py", line 11 *ic[1:3], *xmin[0:3] = np.loadtxt('parameters.txt') ^^^^^^^^^^^^^^^^^^^^ SyntaxError: multiple starred expressions in assignment
該当のソースコード
python
1import numpy as np 2 3rows = 3 4ic = [0 for i in range(rows)] 5xmin = [0 for i in range(rows)] 6 7*ic[1:3], xmin[0], xmin[1], xmin[2] = np.loadtxt('parameters.txt') 8print(ic)#[0, np.float64(1.0), np.float64(2.0)] 9 10###以下の行はエラーになります 11*ic[1:3], *xmin[0:3] = np.loadtxt('parameters.txt')
試したこと
11行目を以下のようにしてもうまくいきませんでした。
python
1*ic[1:3], *xmin[0:3] = np.loadtxt('parameters.txt', delimiter=',')
> 解決法を教えてください。
エラーメッセージにあるとおり、この書き方はできないのですが、どのような解決法を求めていますか?
>TakaiY様
コメントありがとうございます。
パラメータがもっと多いときのために、xmin[0]、xmin[1]、xmin[2]の値を一個ずつ書いていく、以外の方法を望んでいるのですが、この書き方ではできないのですね・・・
ちなみに、左辺に*を複数使えないのは、右辺の配列を分配する方法が一意に決まらなくなるからです。
うまくいく書き方では、*のついていないものに1つずつ、残りをすべて*のついているものにアサインします。数が合うのはそのようなデータだからで、スライスの中の数をみているわけではないのです。
うまい方法があるのかは知りませんが、僕も興味があります。
自分なら、以前にも書いたとおり、長くても意図が明確になるように書きます。*は使いません。
>TakaiY様
理解できました。
コメントありがとうございました。

回答2件
あなたの回答
tips
プレビュー