Python foreach eşdeğeri


192

Python'a daldım ve her bir yineleme hakkında bir sorum var. Python için yeniyim ve C # deneyimim var. Bu yüzden merak ediyorum, koleksiyonumdaki tüm öğelerin her yerinde yineleme için Python'da eşdeğer bir işlev varsa, ör.

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

ya da bunun gibi bir şey.


Yanıtlar:


295

Elbette. Döngü için A.

for f in pets:
    print f

İndeks / anahtarı da bilmem gerekirse ne olur?
Candlejack

25
Sonra numaralandırma kullanırsınız. for k,v in enumerate(pets): vs
Hannu

30

Bunun gibi:

for pet in pets :
  print(pet)

Aslında, Python sadece her foreach tarzı fordöngüye sahiptir.


12

Bunu gözlemlemek de ilginç

Bir dizinin indeksleri üzerinde tekrar etmek için range()ve len()aşağıdaki gibi birleştirebilirsiniz :

a = ['Mary', 'had', 'a', 'little', 'lamb']
for i in range(len(a)):
  print(i, a[i])

çıktı

0 Mary
1 had
2 a
3 little
4 lamb

Düzenleme # 1: Alternatif yol:

Bir sekans arasında döngü yaparken, pozisyon indeksi ve karşılık gelen değer enumerate()fonksiyon kullanılarak aynı anda alınabilir .

for i, v in enumerate(['tic', 'tac', 'toe']):
  print(i, v)

çıktı

0 tic
1 tac
2 toe

4

Güncellenmiş bir yanıt forEachiçin Python'da kolayca bir işlev oluşturabilirsiniz:

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

Ayrıca bu uyum olabilir map, reduce, filter, diğer dillere veya önceliği nedeniyle ve diğer dizi işlevler baştan getirmek isterdi. Döngüler için yeterince hızlı, ancak kazan plakası daha uzun forEachveya diğer işlevlerden daha uzun . Ayrıca, bir listeye yerel bir işaretçi ile bu işlevleri olması için listeyi genişleterek doğrudan listelerde de çağırabilirsiniz.


1
Kullanımı dahil edebilir misiniz lütfen?
ScottyBlades

3

Yukarıdaki cevaplar geçerli olsa da, bir {key: value} diktüsü üzerinden yineleme yapıyorsanız, bu benim kullanmak istediğim yaklaşımdır:

for key, value in Dictionary.items():
    print(key, value)

Bu nedenle, sözlüğümdeki tüm anahtarları ve değerleri dizgi yapmak gibi bir şey yapmak istersem, bunu yaparım:

stringified_dictionary = {}
for key, value in Dictionary.items():
    stringified_dictionary.update({str(key): str(value)})
return stringified_dictionary

Bu, bu tür yinelemeyi uygularken, deneyimimde düzensiz davranışlara (bazen) neden olabilecek herhangi bir mutasyon sorununu önler.


Bunun daha okunabilir bir alternatifi copy, sözlükten birini yinelemektir , böylece yineleme sırasında sözlüğü değiştirebilirsiniz (kopyanız herhangi bir değişiklikten önce tüm anahtar ve değerlerden for key, value in Dictionary.copy().items()
oluşacaktır

1

Bir dikte için index, keyve arasında yineleme yapmak için bir for döngüsü kullanabiliriz value:

dictionary = {'a': 0, 'z': 25}
for index, (key, value) in enumerate(dictionary.items()):
     ## Code here ##
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.