web-dev-qa-db-ja.com

Pythonのforeachと同等のもの

私はPythonに飛び込んでいますが、foreachの繰り返しについて質問があります。私はPythonに不慣れで、C#でもある程度の経験があります。それで、私のコレクションのすべての項目にわたって反復のためのPythonに同等の関数があるのであれば、私は疑問に思います。

pets = ['cat', 'dog', 'fish']
marks = [ 5, 4, 3, 2, 1]

あるいはこんな感じ。

116
Bill

もちろんです。 forループ.

for f in pets:
    print f
181
Hannu

このような:

for pet in pets :
  print(pet)

実際、Python only はforeachスタイルのforループを持っています。

23
Jack Aidley

これを観察するのも面白い

シーケンスのインデックスを反復処理するには、以下のように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
7
krishna

上記の答えは有効ですが、辞書{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

これは、私の経験では(時には)不安定な振る舞いを引き起こす可能性があるこのタイプの反復を適用するときの突然変異の問題を回避します。

2
Marc Tanne

辞書の場合は、forループを使用してindexkey、およびvalueを反復処理できます。

dictionary = {'a': 0, 'z': 25}
for index, (key, value) in enumerate(dictionary.items()):
     ## Code here ##
1
Armaan Salam

最新の回答を得るには、PythonでforEach関数を簡単に構築することができます。

def forEach(list, function)
  for i,v in enumerate(list))
    function(v, i, list)

また、これをmapreducefilter、および他の言語の配列関数、あるいは優先したい優先順位に適用することもできます。 forループは十分高速ですが、ボイラープレートはforEachや他の関数よりも長いです。また、これらの関数をクラスへのローカルポインタで持つようにlistを拡張して、リスト上で直接呼び出すこともできます。

1
Robert Mennell