หลาม foreach เทียบเท่า


191

ฉันกำลังดำน้ำใน Python และฉันมีคำถามเกี่ยวกับการทำซ้ำหน้า ฉันยังใหม่กับ Python และฉันมีประสบการณ์ใน C # ดังนั้นฉันสงสัยว่าถ้ามีฟังก์ชั่นที่เทียบเท่าใน Python สำหรับการทำซ้ำทุกรายการในคอลเลกชันของฉันเช่น

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

หรืออะไรทำนองนี้


คำตอบ:


294

แน่ใจ สำหรับวง

for f in pets:
    print f

ถ้าฉันต้องรู้จักดัชนี / คีย์ด้วยล่ะ
candlejack

25
จากนั้นคุณจะใช้แจกแจง for k,v in enumerate(pets): ฯลฯ
Hannu


12

มันน่าสนใจที่จะสังเกตสิ่งนี้

ในการวนซ้ำดัชนีของลำดับคุณสามารถรวม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

4

สำหรับคำตอบที่ปรับปรุงแล้วคุณสามารถสร้างforEachฟังก์ชั่นใน Python ได้อย่างง่ายดาย:

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

นอกจากนี้คุณยังสามารถปรับใช้ฟังก์ชันนี้เพื่อmap, reduceและfilter, ฟังก์ชันอาเรย์อื่น ๆ จากภาษาอื่นหรือลำดับความสำคัญที่คุณต้องการนำมาใช้ สำหรับลูปนั้นเร็วพอ แต่จานหม้อไอน้ำนั้นยาวกว่าforEachหรือฟังก์ชั่นอื่น ๆ คุณสามารถขยายรายการเพื่อให้มีฟังก์ชั่นเหล่านี้พร้อมกับตัวชี้โลคัลไปยังคลาสดังนั้นคุณสามารถเรียกพวกมันโดยตรงในรายการได้เช่นกัน


1
กรุณารวมถึงการใช้งานได้ไหม
ScottyBlades

3

ในขณะที่คำตอบข้างต้นนั้นถูกต้องหากคุณวนซ้ำตามคำสั่ง {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

สิ่งนี้จะช่วยหลีกเลี่ยงปัญหาการกลายพันธุ์เมื่อใช้การวนซ้ำประเภทนี้ซึ่งอาจทำให้พฤติกรรมผิดปกติ (บางครั้ง) ในประสบการณ์ของฉัน


ทางเลือกที่อ่านได้มากกว่านี้คือการวนซ้ำcopyของพจนานุกรมดังนั้นคุณสามารถจัดการพจนานุกรมในระหว่างการทำซ้ำ (แม้ว่าสำเนาของคุณจะเป็นของคีย์และค่าทั้งหมดก่อนการแก้ไขใด ๆ ) - เช่นfor key, value in Dictionary.copy().items()
Marc Maxmeister

1

สำหรับ dict เราสามารถใช้ a สำหรับ loop เพื่อวนซ้ำผ่านindex, keyและvalue:

dictionary = {'a': 0, 'z': 25}
for index, (key, value) in enumerate(dictionary.items()):
     ## Code here ##
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.