私はPythonに飛び込んでいますが、foreachの繰り返しについて質問があります。私はPythonに不慣れで、C#でもある程度の経験があります。それで、私のコレクションのすべての項目にわたって反復のためのPythonに同等の関数があるのであれば、私は疑問に思います。
pets = ['cat', 'dog', 'fish']
marks = [ 5, 4, 3, 2, 1]
あるいはこんな感じ。
もちろんです。 forループ.
for f in pets:
print f
このような:
for pet in pets :
print(pet)
実際、Python only はforeachスタイルのfor
ループを持っています。
これを観察するのも面白い
シーケンスのインデックスを反復処理するには、以下のようにrange()
とlen()
を組み合わせることができます。
a = ['Mary', 'had', 'a', 'little', 'lamb']
for i in range(len(a)):
print(i, a[i])
出力
0 Mary
1 had
2 a
3 little
4 lamb
編集#1:別の方法:
シーケンスをループするときは、enumerate()
関数を使用して位置インデックスと対応する値を同時に取得できます。
for i, v in enumerate(['tic', 'tac', 'toe']):
print(i, v)
出力
0 tic
1 tac
2 toe
上記の答えは有効ですが、辞書{key:value}を反復処理している場合、これが私が使用したいアプローチです。
for key, value in Dictionary.items():
print(key, value)
したがって、辞書内のすべてのキーと値を文字列化するなどのことをしたい場合は、次のようにします。
stringified_dictionary = {}
for key, value in Dictionary.items():
stringified_dictionary.update({str(key): str(value)})
return stringified_dictionary
これは、私の経験では(時には)不安定な振る舞いを引き起こす可能性があるこのタイプの反復を適用するときの突然変異の問題を回避します。
辞書の場合は、forループを使用してindex
、key
、およびvalue
を反復処理できます。
dictionary = {'a': 0, 'z': 25}
for index, (key, value) in enumerate(dictionary.items()):
## Code here ##
最新の回答を得るには、PythonでforEach
関数を簡単に構築することができます。
def forEach(list, function)
for i,v in enumerate(list))
function(v, i, list)
また、これをmap
、reduce
、filter
、および他の言語の配列関数、あるいは優先したい優先順位に適用することもできます。 forループは十分高速ですが、ボイラープレートはforEach
や他の関数よりも長いです。また、これらの関数をクラスへのローカルポインタで持つようにlistを拡張して、リスト上で直接呼び出すこともできます。