สำหรับวนซ้ำใน Python

For loop ใน Python มีคุณสมบัติที่แตกต่างจากภาษาโปรแกรมอื่นๆ ฉันฝากสิ่งที่คุณกำลังเรียนรู้เพื่อใช้ประโยชน์สูงสุดจากลูปที่ใช้บ่อยที่สุด

ใน Python มีจุดมุ่งหมายเพื่อทำซ้ำผ่านวัตถุที่ทำซ้ำได้ ไม่ว่าจะเป็นรายการ วัตถุ หรือองค์ประกอบอื่น

โครงสร้างต่อไปนี้คือ

h2=[ 'Valencia', 'Castellón', 'Alicante']

for j in h2:
   instructions

ที่นี่ h2 เป็นองค์ประกอบที่ทำซ้ำได้ เช่น รายการ h2=[ 'Valencia', 'Castellón', 'Alicante'] การวนซ้ำจะมีการวนซ้ำ 3 ครั้ง ในครั้งแรก j=Valencia ในตัวแปรที่สอง j=Castellón

และด้วยสิ่งนี้ เราสามารถกำหนดคำสั่งที่เราต้องการ จดจำการเยื้อง บางสิ่งที่จำเป็นใน Python และคนจำนวนมากเพิกเฉย ได้รับข้อผิดพลาดในโค้ด

วนซ้ำจำนวนครั้งที่แน่นอน

หากเราต้องการให้มันทำซ้ำจำนวนครั้งที่เราทำได้ใน C++ เราจะต้องใช้ range() ในการวนซ้ำ 10 ครั้ง เราจะใช้ a

for element in Range(9):
    instructions

เราใส่ 9 ไม่ใช่ 10 เพราะช่วงเริ่มต้นจาก 0 ดังนั้นจาก 0 ถึง 9 มีการวนซ้ำ 10 ครั้งหรือรอบของลูป

Knowing Range() ช่วยให้เราใส่ตัวแปรแทนการใส่ตัวเลขเข้าไปได้ ซึ่งเราจะสามารถควบคุมได้มากขึ้น

var = 10
for element in Range(var):
    instructions

ฟังก์ชั่น Range มีตัวเลือกมากมาย ฉันจะพูดถึงมันในโพสต์อื่น เพื่อไม่ให้ผสมเนื้อหาและพัฒนามันให้มากที่สุด

สามารถควบคุมโฟลว์ของ for loop ได้อีกมากมาย

ทำลายและดำเนินการต่องบ

มี 2 ​​ฟีเจอร์ที่มีประโยชน์มากที่ช่วยให้เราสร้าง for loop ที่ใช้งานได้ดีมาก fon the break และ Continue มักใช้กับเงื่อนไข ถ้าตรวจสอบว่ามีบางอย่างจริงหรือไม่

พวกมันทำงานในลูปอื่น ๆ และมีคำสั่งที่น่าสนใจอีกอย่างหนึ่งคือ pass ซึ่งเป็นคำสั่งที่ดำเนินการแต่ไม่ทำอะไรเลย และเหมาะอย่างยิ่งสำหรับเวลาที่เราต้องการกำหนดโครงสร้างที่ต้องใช้คำสั่ง แต่เราต้องการวางไว้ในภายหลัง (ความคิดเห็นคือ ไม่มีประโยชน์สำหรับสิ่งนี้)

ทำลาย

ด้วยการหยุดพัก เราสามารถออกจากลูปได้ตลอดเวลา อย่างที่คุณจินตนาการว่ามีประโยชน์มาก มันเป็นความจริงที่มีโครงสร้างอื่น ๆ เช่นในขณะที่,

numeros = [1, 2, 4, 3, 5, 8, 6]
for n in numeros:
    if n == 3:
        break
else:
    print('No se encontró el número 3')

ต่อ

มันทำให้เราไปที่องค์ประกอบถัดไปในวง

numeros = [1, 2, 4, 3, 5, 8, 6]
for n in numeros:
    if n == 3:
        continue
else:
    print('No se encontró el número 3')

https://j2logo.com/bucle-for-en-python/

สำหรับ … อื่น

มีโครงสร้างที่มาจาก For ซึ่งสำหรับ …else

datos = [1, 2, 3, 4, 5]
for n in datos:
    if n == 2:
        break
else:
    print('No hay 2')

โครงสร้างนี้เกิดขึ้นหลังจากที่พวกเขาเห็นว่าจำเป็นและหลายคนกำลังใช้วิธีอื่นเพื่อบรรลุเป้าหมายนี้ ดังนั้นพวกเขาจึงช่วยเหลือผู้คนและรับรหัสที่อ่านง่ายขึ้น

สำหรับ _ ใน iterable

ฉันเคยเห็นสิ่งนี้ในบางโปรแกรมแม้ว่าฉันไม่เคยใช้

เมื่อเรากำลังวนซ้ำวัตถุ รายการ พจนานุกรม ฯลฯ แต่เนื้อหาขององค์ประกอบเหล่านั้นไม่สนใจเรา เราสามารถระบุด้วย _

ตัวอย่าง:

เราต้องการนับองค์ประกอบของรายการ แต่เราไม่สนใจว่าองค์ประกอบนั้นประกอบด้วยอะไร เราแค่ต้องการความยาวของมัน

h2=[ 'Valencia', 'Castellón', 'Alicante']
count = 0
for _ in h2:
    cont += 1

ในหลาย ๆ ไซต์พวกเขาแนะนำไม่ให้ละเมิดแนวปฏิบัตินี้ ฉันไม่รู้ข้อดีของมันจริง ๆ ว่ามันเร็วกว่าไหม

วนไปข้างหลัง

ย้อนกลับสำหรับลูป ย้ำตั้งแต่ต้นจนจบ

มันใช้ฟังก์ชัน reversed() ที่นำมาใช้ใน python 3

h2=[ 'Valencia', 'Castellón', 'Alicante']

for j in reversed(h2):
    print (j)

วนรอบด้วยสองดัชนี ค่าของ iterable และ index

ด้วย enumerate() เราสามารถทำงานกับดัชนีของคอลเลกชันได้ เพราะหลายครั้งที่นอกเหนือไปจากค่าของวัตถุ iterable เอง เราสนใจดัชนีของมัน

h2=[ 'Valencia', 'Castellón', 'Alicante']

for j, h in enumerate(h2):
    print j, '-->', h2[i] 

วนซ้ำมากกว่า 2 รายการ

อีกตัวเลือกหนึ่งที่น่าสนใจมากคือ zip() ซึ่งจะทำให้งานของเราง่ายขึ้นและจะทำให้โค้ดของเราง่ายขึ้นและอ่านง่ายขึ้น

h2=[ 'Valencia', 'Castellón', 'Alicante']
cod=[100, 200, 300]

for j, h in zip(h2, cod):
    print h2, '-->', cod 

ใน Python 2.x izip() ถูกใช้เพื่อปรับปรุงฟังก์ชันนี้ แต่ใน Python 3 izip คือ zip()

วนซ้ำตามลำดับ

วนซ้ำตามลำดับตามค่าของวัตถุแทนที่จะเป็นดัชนี ใช้ sorted()

colors = ['rojo', 'amarillo', 'verde']

for color in sorted(colors):
    print color

และถ้าเราต้องการทำย้อนกลับ

colors = ['rojo', 'amarillo', 'verde']

for color in sorted(colors, reverse=True):
    print color

ลำดับการจัดเรียงแบบกำหนดเอง

colors = ['rojo', 'amarillo', 'verde']

for color in sorted(colors, key=len):
    print color

ค่า Sentinel ในการวนซ้ำ

ค่า Sentinel เป็นค่าที่ทำให้การวนซ้ำสิ้นสุดลง มักจะนำเสนอในขณะที่วนซ้ำ แต่ Raymond Hettinger แสดงให้เราเห็นว่าจะใช้ a for ซึ่งเร็วกว่า

blocks = []
for block in iter(partial(f.read, 32), ''):
    blocks.append(block)
    print (block)

พจนานุกรมสำรวจด้วย for

พจนานุกรมเป็นเครื่องมือที่จำเป็นสำหรับการแสดงความสัมพันธ์และการจัดกลุ่ม

ท่องดิกชันนารีแบบเดิมๆ ได้ด้วย for แต่นั่นจะไม่คืนข้อมูลทั้งหมด เราจะไม่สามารถทำงานกับค่าและดัชนีแบบนั้นได้ ถ้าเราไม่เริ่มเพิ่มตัวนับและตัวนับอื่นๆ องค์ประกอบ

d = {'casa': 'azul', 'coche': 'rojo', 'hombre': 'verde'}

for k in d.keys():
    if k.startswith('r'):
        del d[k]

ด้วยวิธีนี้ นอกจากการดูองค์ประกอบแล้ว เราสามารถแก้ไขพจนานุกรมโดยการเปลี่ยนองค์ประกอบหรือลบออก ในเวลาเดียวกันกับการวนซ้ำ for

d.keys() เรียกใช้อาร์กิวเมนต์และทำสำเนาที่เก็บอยู่ในรายการที่เราสามารถแก้ไขได้

เพื่อให้ได้ดัชนีและค่านิยมแทนสิ่งดั้งเดิมและนั่นคือสิ่งแรกที่อยู่ในใจสำหรับพวกเราที่เริ่มเขียนโปรแกรม

for k in d:
    print k, '-->', d[k]

เราจะใช้ตัวเลือกที่เร็วกว่านี้มาก

for k, v in d.items():
    print k, '-->', v

iteritems() มากกว่า item()

พูดคุยเกี่ยวกับลูปใน Python โดย Raymond Hettinger

เป็นวิดีโอเก่าแต่มีภาพประกอบ โดยในช่วง 20 นาทีแรก Raymond Hettinger สอนเราถึงความเป็นไปได้ต่างๆ ของลูปใน Python และให้ตัวอย่างว่าพวกเขาแปลงโครงสร้างที่ผู้คนใช้กันอย่างแพร่หลายให้เป็นฟังก์ชันอย่างไร เพื่อให้วงอ่านง่ายขึ้นและง่ายขึ้น . รหัส.

หากคุณเป็นคนใจร้อนเหมือนเราและต้องการร่วมมือในการบำรุงรักษาและปรับปรุงโครงการ คุณสามารถบริจาคได้ เงินทั้งหมดจะไปซื้อหนังสือและวัสดุเพื่อทดลองและทำแบบฝึกหัด

แสดงความคิดเห็น