2011-08-17 13 views
3

関数にリストを作成して追加し、関数に別の値を渡してリストに追加するにはどうすればよいですか?例えば関数に定義されたリストに追加する

def another_function(): 
    y = 1 
    list_initial(y) 

def list_initial(x): 
    list_new = [ ] 
    list_new.append(x) 
    print list_initial 

another_function() 
list_initial(2) 

ありがとう!

def list_at_function_scope(arg,lst=[]): 
    lst.append(arg) 
    return lst 

print list_at_function_scope(2) 
print list_at_function_scope("qwqwe") 

をそして、それは次のようになります:あなたはあなたの関数にスコープされたリストが必要な場合は

+0

あなたが尋ねていることは明確ではありません。あなたが持っているコードはうまくいくでしょうが、 'another_function'が' list_initial'と何をしているのか分かりません。このコードについて、あなたが望むものではないものがありますか? –

+0

私の間違い。 another_functionを修正しました。 –

答えて

4

私はあなたがこのような何か後にしている推測している:

#!/usr/bin/env python 

def make_list(first_item): 
    list_new = [] 
    list_new.append(first_item) 
    return list_new 

def add_item(list, item): 
    list.append(item) 
    return list 

mylist = make_list(1) 
mylist = add_item(mylist, 2) 

print mylist # prints [1, 2] 

あるいは:

#!/usr/bin/env python 

def add_item(list, item): 
    list.append(item) 
    return list 

mylist = [] 
mylist = add_item(mylist, 1) 
mylist = add_item(mylist, 2) 

print mylist # prints [1, 2] 

しかし、この種の操作は、通常の機能で包むだけの価値はありません。

#!/usr/bin/env python 

# 
# Does the same thing 
# 
mylist = [] 
mylist.append(1) 
mylist.append(2) 

print mylist # prints [1, 2] 
+0

'list.append()'はリストを変更するので、 'add_item'からlistを返す必要はありません。そして' make_list'関数は3行ではなく、1行で 'first_item 'を返すだけです。 –

+0

本当ですが、私はOPの元のコードから離れすぎないようにしていました。 – MatthewD

4

、あなたがこれを行うことができ

>>> print list_at_function_scope(2) 
[2] 
>>> print list_at_function_scope("qwqwe") 
[2, 'qwqwe'] 

マインドあなたを、これが一般的とみなされていますよく知られているアンチパターン/エラーのpythonです。ちょうどそうあなたはあなたが自分自身になっているものを知っている。

+0

ありがとう!より多くのpythonのようにこれを行うための任意の提案? –

+0

"python like way"、そうでなければ "pythonic"として知られています*非常に*よく誤解されることがあります。私が見たいわゆる「pythonic」コードのほとんどの例は、開発者自身の定義(言い換えられている)とはかなり反対です。これは「明確で簡潔」です。 –

+0

これがなぜ起こっているのか教えていただけますか?どこでもっと読むことができますか? –

関連する問題