2016-12-20 15 views
0

リストの各キーが別の関数の更新可能なパラメータになる関数を作成しようとしています。Pythonリストのprintキーの代わりに返す

私は、このようなリストにすべてのキーを印刷することができることを知っている:

x = [a , b, c, d] 

    for key in x: 
     print(key) 

しかし、私は次のようにreturn文を使用する場合:

for key in x: 
    return key 

それだけを返します。

ループを実行するたびにリストを反復処理して各値を返すにはどうすればよいですか。

ありがとうございました。

+0

'yield'ステートメントをこの状況に適用することができます。 –

+0

しかし、なぜですか? 'for'ループはすでにリストの各要素を返します。あなたは本当に何を達成しようとしていますか? – DeepSpace

答えて

0

returnステートメントを使用すると、関数を終了します。したがって、最初のループの後にインタープリタは関数を終了し、リストの最初のインデックスを返します。 もっとコードを投稿できますか? 私は機能でこれを置くための理由を見ていないが、必要であれば、一つの選択肢は次のようになります。

for i in range(len(list)): 
    storeSomeWhere = myFunction(list, i) 

def myFunction(list, i): 
    return list[i] 
0

若干の修正がokです:何のために

def PrintKey(x): 
    for key in x: 
     yield key 
0

forループでは、リストから一度に1つの値が手渡されています。

あなたはリストを受け取り、次の要素にそれが使用されるたびに返すジェネレータ関数を使用することができます主張する場合(それは要素がなくなるまでを、そしてStopIteration例外が発生し):

def gen(li): 
    for element in li: 
     yield element 

li = [1, 2, 3, 4] 

a = gen(li) 
print(next(a)) 
# 1 
print(next(a)) 
# 2 
print(next(a)) 
# 3 
print(next(a)) 
# 4 
print(next(a)) 
Traceback (most recent call last): 
    File "main.py", line 63, in <module> 
    print(next(a)) 
StopIteration 

しかし、もう一度、私はあなたの場合にこれを使用する理由はありません。 forループの値をそのまま使用してください。

関連する問題