30

私はPythonの完全な初心者であり、リスト/配列をパラメータとして宣言するPython関数に引数として配列を渡そうとしています。

私はそれが間違っていると宣言していると確信しています、

ここに行きます:

def dosomething(listparam):
         #do something here
dosomething(listargument)

明らかにこれは機能していません。何が間違っていますか?

ありがとう

4

3 に答える 3

38

あなたが持っているものは正しい軌道に乗っています。

def dosomething( thelist ):
    for element in thelist:
        print element

dosomething( ['1','2','3'] )
alist = ['red','green','blue']
dosomething( alist )  

出力を生成します。

1
2
3
red
green
blue

上記のコメントを踏まえて注意すべき点がいくつかあります。C ファミリ言語とは異なり、インデックス自体が重要でない限り、リストを反復処理するときにインデックスを追跡する必要がないことがよくあります。ただし、インデックスが本当に必要な場合は、ダンスを行うのではなく、ペアenumerate(list)を取得するために使用できます。index,elementx in range(len(thelist))

于 2012-08-12T23:30:29.880 に答える
19

配列の要素をアンパックしたいかもしれませんが、それを取得したかどうかはわかりませんが、以下に例を示します。

def my_func(*args):
    for a in args:
        print(a)

my_func(*[1,2,3,4])
my_list = ['a','b','c']
my_func(*my_list)
于 2012-08-12T23:40:37.357 に答える
3

OPが実際に何を求めていたのかはっきりしていないと思います...配列/リスト全体を渡して、関数内で操作しますか? または、配列/リスト内のすべての値/アイテムで同じことをしたいですか? 後者を希望する場合は、うまく機能する方法を見つけました。

Fortran や C などのプログラミング言語の方が、配列内の各要素を操作する要素関数を定義できるプログラミング言語に精通しています。私は最終的にこれに相当するpythonを追跡し、解決策をここに再投稿すると考えました。重要なのは、関数を「ベクトル化」することです。次に例を示します。

def myfunc(a,b):
    if (a>b): return a
    else: return b
vecfunc = np.vectorize(myfunc)
result=vecfunc([[1,2,3],[5,6,9]],[7,4,5])
print(result)

出力:

[[7 4 5]
 [7 6 9]]
于 2015-02-05T14:10:54.690 に答える