3

私はPythonでこのコードを持っています。

import sys
list1 = ["A", "B", "C"]
list2 = [1, 2, 3]

myarg = sys.argv[1]
print len(myarg)

このスクリプトをコマンドラインから次のように実行します

python script.py list1

したがって、変数ではなくリストでlenを機能させる方法が必要です.varでリストの名前を指定したいだけです。

この例でできることはわかっています

if myarg == "list1":
    print len(list1)
else if myarg == "list2"
    print len(list2)

しかし、私のスクリプトには 13 個のリストがあり、コマンド ラインで指定した名前でそれらを参照する方法が必要です。

4

3 に答える 3

8

これは Python で完全に可能ですが、必須ではありません。ここでの最善の解決策は、これを行わず、代わりに辞書を用意することです。

import sys

lists = {
    "list1": ["A", "B", "C"],
    "list2": [1, 2, 3],
}

myarg = sys.argv[1]
print len(lists[myarg])

スクリプトに 13 個のリストがあることに注意してください。似たようなデータ (または同様の方法で処理する必要があるデータ) がたくさんあります。これは、フラットな変数ではなく、データ構造が必要であることを示しています。それはあなたの人生をずっと楽にしてくれます。

于 2012-11-10T17:44:33.607 に答える
2

それは可能であり、@ Lattywareの答えが正しいと思ったので、これがあなたそれを行う方法です:

import sys
list1 = ["A", "B", "C"]
list2 = [1, 2, 3]

myarg = sys.argv[1]

print len(globals().get(myarg, []))

が表示される場合0は、コマンド ラインの引数が間違っています。

于 2012-11-10T17:47:54.493 に答える
1

すべきではありませんが、本当にこれをしたい/しなければならない場合は、次を使用できますglobals()

print len(globals()[myarg])

まずmyarg、宣言された変数の名前であることを確認します。if myarg in globals(): ...

于 2012-11-10T17:47:23.843 に答える