0
def main():

    my_list = [[float(i) for i in line.split(',')] for line in open("Alpha.txt")]
    print(my_list)
    for elem in my_list:
        listA=[]
        listA = elem
        print(listA)


main()

このコードは、探している正しいデータを出力しますが、for ループからオブジェクトに各出力を設定する必要があります。どうすればそれを行うことができるかについての助けはありますか?

[1.2, 4.3, 7.0, 0.0]
[3.0, 5.0, 8.2, 9.0]
[4.0, 3.0, 8.0, 5.6]
[8.0, 4.0, 3.0, 7.4]
4

3 に答える 3

2

あなたが考えている/やろうとしていることは、変数に動的に名前を付けることです。

しないでください。

データを に残して、listインデックス経由でアクセスするか

my_list[0] #what you were trying to assign to 'a'
my_list[0][0] #the first element in that sub-list

または、それぞれに割り当てたい意味のある識別子がある場合は、を使用しdictて「キー」を「値」に割り当てることができます。

d = {}
for sublist, meaningful_identifier in zip(my_list, my_meaningful_identifiers):
    d[meaningful_identifier] = sublist

いずれにせよ、Python のデータ構造を活用して、本来の機能を実行してください。

于 2013-10-23T18:05:04.557 に答える
1

これは良い考えではありません。警告させてください。これを本番コードで使用しないでください (コード インジェクションが発生しやすくなります)。グローバル名前空間を台無しにしますが、要求どおりに動作します。

exec()これは、ステートメントを動的に実行する関数です。

def main():
    my_list = [[float(i) for i in line.split(',')] for line in open("Alpha.txt", "r")]
    print(my_list)
    for elem in my_list:
        exec "%s = %s" % ("abcdefghijklmnopqrstuvwxyz"[my_list.index(elem)], elem) in globals()

main()

これで、グローバル名前空間は、要素に対応する変数 a、b、c などで満たされます。

また、例外が発生しやすく、要素が 26 を超えると、IndexError が発生しますが、これは回避できます。

于 2013-10-23T18:05:48.977 に答える