شمارهٔ هر مورد و جفت کردن دو فهرست
اسمها lida و بعد guest هستند. نوشیدنیها water و بعد tea. zip مورد اول هر فهرست را با هم میدهد، بعد مورد دوم را. enumerate شماره میگذارد کنار هر اسم، و اگر شروع دیگری ندهید آن شماره 0 است. for فقط روی یک ردیف حاضر راه میرفت. break و continue هم شماره نمیساختند و دو فهرست را جفت نمیکردند. اینجا حلقه قطع نمیشود. یا شماره میگیرد، یا جفت.
فهرست names دو رشته دارد. enumerate(names) در هر دور یک شماره و یک اسم میدهد. شمارهٔ اول 0 است، چون شروع دیگری نگفتهاید. print هر دو را روی یک خط مینویسد.
names = ["lida", "guest"]
for number, name in enumerate(names):
print(number, name)
روی صفحه میآید 0 lida، بعد 1 guest. آن 0 و 1 داخل names ذخیره نشدهاند. names همان دو رشته است. شماره فقط مال همان دور است.
شماره را از 1 شروع کنید
1 را آرگومان دوم بدهید. enumerate(names, 1) مینویسد 1 lida، بعد 2 guest. ترتیب اسمها تکان نخورده. فقط شمارش عوض شده. آرگومان دوم را ننویسید تا دوباره از 0 شروع شود.
zip دو فهرست میگیرد و از هر کدام یک مورد، به همان ترتیب. names اول lida است و drinks اول water. دور اول lida با water است. دور دوم guest با tea. شمارهای در کار نیست، مگر خودتان enumerate را هم صدا بزنید. این برنامه آن را صدا نمیزند.
names = ["lida", "guest"]
drinks = ["water", "tea"]
for name, drink in zip(names, drinks):
print(name, drink)
میبینید lida water، بعد guest tea. جفت شدن از روی ترتیب فهرست است، نه از روی معنی اسم. نوشیدنیها را جابهجا کنید تا جفتها هم جابهجا شوند.
فهرست کوتاهتر حلقه را تمام میکند
در drinks فقط water بگذارید. zip باز از سر هر دو فهرست شروع میکند، پس دور اول lida با water است. نوشیدنی دومی نیست. zip یکی نمیسازد و خطا هم نمیدهد. guest اصلاً دیده نمیشود و حلقه تمام میشود.
names = ["lida", "guest"]
drinks = ["water"]
for name, drink in zip(names, drinks):
print(name, drink)
تنها خط lida water است. guest هنوز داخل names است. نوشیدنیای کنارش نبود، پس این حلقه به آن اسم نرسید.
چهار صدا، و هر کدام چه مینویسد. دو ردیف enumerate فقط در شروع فرق دارند. دو ردیف zip فقط در طول drinks.
📊 هر صدا چه مینویسد
| صدا | آنچه میبینید |
|---|---|
| enumerate(names) | 0 با lida، بعد 1 با guest |
| enumerate(names, 1) | 1 با lida، بعد 2 با guest |
| zip با water و بعد tea | lida با water، بعد guest با tea |
| zip وقتی drinks فقط water دارد | lida با water، بعد حلقه تمام میشود |
صفحهٔ بعد تابع است: یک کار با اسم، که بتوانید بعداً صدایش بزنید. نه به فهرست شماره میدهد و نه دو فهرست را جفت میکند.
پیش از اجرا حساب کنید
- names یعنی lida، بعد guest. enumerate(names) کدام خطها را مینویسد؟
- شروع را 1 میدهید. خط اول چیست؟
- drinks یعنی water، بعد tea. خط دوم zip چیست؟
- drinks فقط water دارد. guest نوشته میشود؟ برنامه با خطا میایستد؟
جایی که جفتها بههم میریزد
- انتظار شروع از 1، وقتی شروعی ندادهاید
- گمان اینکه شماره برمیگردد داخل خود فهرست
- جفت کردن lida با tea، چون tea به نظرتان جور درمیآید
- انتظار دیدن guest، وقتی drinks یک مورد بیشتر ندارد
- تمام شدن زودرس را خطا گرفتن
یک جمع
enumerate یک فهرست را راه میبرد و شماره میگذارد. بدون شروع، شماره 0 است و بعد 1: 0 با lida، بعد 1 با guest. اگر 1 را بدهید، همان اسمها با 1 و 2 میآیند.
zip دو فهرست را همقدم راه میبرد. طول برابر میشود lida با water، بعد guest با tea. اگر drinks فقط water داشته باشد، lida water نوشته میشود و حلقه تمام میشود. guest در names میماند و این حلقه به آن نمیرسد.
صفحهٔ بعد یک کار را اسمگذاری میکند تا بتوانید صدایش بزنید.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود