web-dev-qa-db-ja.com

配列/リストをPythonに渡す

Pythonは配列を呼び出す傾向があるため、配列またはリストを関数に渡すことを検討しています。

次のような* argsの使用について読みました。

def someFunc(*args)
    for x in args
        print x

しかし、これが正しいか間違っているかはわかりません。私が望むように何も動作しないようです。配列をPHP関数に簡単に渡すことができるようになりましたが、これは私を混乱させています。また、私はこれを行うことができないようです:

def someFunc(*args, someString)

エラーがスローされると。

私は自分自身を完全に混乱させ、それを解決してくれる人を探しているところだと思います。

42
Jack Franklin

この構文を使用して関数を定義する場合:

def someFunc(*args)
    for x in args
        print x

可変数の引数を期待していることを伝えています。リスト(他の言語の配列)を渡したい場合は、次のようにします。

def someFunc(myList = [], *args)
    for x in myList:
        print x

次に、これで呼び出すことができます:

items = [1,2,3,4,5]

someFunc(items)

変数引数の前に名前付き引数を定義し、キーワード引数の前に変数引数を定義する必要があります。これも持つことができます:

def someFunc(arg1, arg2, arg3, *args, **kwargs)
    for x in args
        print x

これは少なくとも3つの引数を必要とし、他の引数とキーワード引数の可変数をサポートします。

55
g.d.d.c

他のタイプと同様にリストを渡すことができます。

l = [1,2,3]

def stuff(a):
   for x in a:
      print a


stuff(l)

これにより、リストlが印刷されます。リストはディープコピーではなく参照として渡されることに注意してください。

24
JoshD

Pythonリスト(サイズはオンザフライで変更できるため配列ではありません)は通常のPythonオブジェクトであり、任意の変数として関数に渡すことができます。リストの展開には*構文が使用されますが、これはおそらく今はしたくないことです。

リストを受け入れるためにアスタリスクを使用する必要はありません。

定義で引数に名前を付け、次のようなリストを渡すだけです。

def takes_list(a_list):
    for item in a_list:
         print item
6
JAL