پث‌وایز

شروع برنامه‌نویسی با پایتون (Intro to Python) · درس ۶ از ۱۲ · ۱۲ دقیقه

لیست‌ها: کلی مقدار یه‌جا (Lists)

لیست مقدارها رو به ترتیب زیر یه اسم نگه می‌داره. آیتم‌ها رو با جاشون برمی‌داری، اضافه و عوضشون می‌کنی، و خطایی رو می‌شناسی که وقتی یه جای ناموجود رو بخوای می‌گیری.

لیست‌ها

کلی مقدار، به ترتیب، زیر یه اسم

لیست رو با کروشه می‌نویسن و بین آیتم‌ها ویرگول می‌ذارن: scores = [8, 5, 9]. آیتم‌ها همون ترتیبی رو که نوشتی نگه می‌دارن. می‌تونن از هر نوعی باشن، عدد، رشته یا قاطی، و len(scores) بهت می‌گه چند تا آیتم هست. وقتی یه لیست رو چاپ کنی، کروشه‌هاش هم چاپ می‌شن.

names = ["Sara", "Omid"] یه لیست از دو تا رشته‌ست؛ len(names) می‌شه 2.

scores = [8, 5, 9]
names = ["سارا", "امید"]
print(scores)
print(names)
print(len(scores))

خروجی

[8, 5, 9]
['سارا', 'امید']
3

به خط دوم خروجی دقت کن: پایتون رشته‌های توی لیست رو با گیومه‌ی تکی چاپ می‌کنه، با این‌که توی کد گیومه‌ی دوتایی بوده. در هر دو حالت همون متنه.

خودت رو امتحان کن

scores = [8, 5, 9]
print(scores[1])
  1. 5
  2. 8
  3. 9
  4. [8, 5]
جواب رو ببین
5

جایگاه‌ها

اندیس‌ها از 0 شروع می‌شن و آخریش len - 1‌ـه

لیست‌ها هم جایگاه‌ها رو از 0 می‌شمرن، درست مثل رشته‌ها. توی scores = [8, 5, 9]، scores[0] می‌شه 8 و scores[2] می‌شه 9، و scores[-1] همیشه آخرین آیتمه. سه تا آیتم یعنی جایگاه‌های 0 و 1 و 2، پس آخرین اندیس یکی کمتر از طول لیسته. اگه scores[3] رو بخوای، برنامه با IndexError: list index out of range متوقف می‌شه. این اشتباه یکی‌کم‌یکی‌زیاد رایج‌ترین اشتباه لیست‌هاست.

برش هم کار می‌کنه: scores[0:2] می‌شه [8, 5].

خودت رو امتحان کن

scores[-1] آخرین آیتم لیست رو می‌ده، طول لیست هر چقدر که باشه.

جواب رو ببین

درست

درسته. جایگاه‌های منفی از آخر به عقب می‌شمرن، پس -1 همیشه آخرین آیتمه. با [8, 5, 9] می‌شه 9؛ بعد از اضافه کردن 7 می‌شد 7.

قدم‌به‌قدم ببین

  1. scores = [8, 5, 9]: سه تا خونه، با شماره از 0

    لیست به‌صورت سه تا خونه‌ی به‌هم‌چسبیده کشیده شده که 8 و 5 و 9 رو دارن، و اسم scores سمت چپشه. زیرشون جایگاهشون نوشته شده، 0 و 1 و 2: لیست یه ردیف مقداره زیر یه اسم، که از 0 شماره‌گذاری شده.

  2. scores[1] عدد 5 رو بیرون میاره

    فلش scores[1] به خونه‌ی وسطی اشاره می‌کنه که روشن می‌شه، و مقدارش، یعنی 5، بالای اون بیرون میاد. عدد توی کروشه آیتمی رو که توی اون جایگاهه برمی‌داره، و جایگاه 1 دومین آیتمه.

  3. append(7) یه خونه‌ی چهارم اضافه می‌کنه

    append(7) یه خونه‌ی جدید با مقدار 7 به ته لیست اضافه می‌کنه، و اندیس 3 زیرش ظاهر می‌شه. یه شمارنده سمت چپ حالا می‌گه len = 4: append یه آیتم به آخر اضافه می‌کنه و طول لیست یکی بیشتر می‌شه.

  4. scores[4] به بعد از آخر لیست اشاره می‌کنه: IndexError

    یه فلش دوم، scores[4]، به یه خونه‌ی خالی و خط‌چین بعد از 7 اشاره می‌کنه که برچسب نارنجی IndexError داره. با چهار تا آیتم جایگاه‌ها 0 تا 3 هستن، پس آخرین اندیس یکی کمتر از len‌ـه؛ خواستن 4 خطا می‌ده.

خودت رو امتحان کن

scores = [8, 5, 9]
scores.append(7)
print(len(scores))
  1. 4
  2. 3
  3. 7
  4. 10
جواب رو ببین
4

عوض کردن لیست

برخلاف رشته‌ها، لیست‌ها رو می‌شه عوض کرد

می‌تونی با مقداردهی به یه جایگاه، آیتمش رو عوض کنی: scores[1] = 6. append() یه آیتم به آخر اضافه می‌کنه، remove(9) اولین 9‌ای رو که پیدا کنه پاک می‌کنه، و pop() آخرین آیتم رو برمی‌داره و پس می‌ده. چند تا ابزار هم هستن که لیست رو بدون عوض کردنش می‌خونن: sum() و max() و min()، و in برای این‌که ببینی یه مقدار توش هست یا نه.

برای [8, 5, 9]، 9 in scores می‌شه True و sum(scores) می‌شه 22.

scores = [8, 5, 9]
scores[1] = 6
scores.append(7)
print(scores)
print(9 in scores)
print(sum(scores))
print(max(scores))

خروجی

[8, 6, 9, 7]
True
30
9

خط ۲ به‌جای 5 عدد 6 می‌ذاره، و خط ۳ عدد 7 رو به آخر اضافه می‌کنه، پس لیست حالا [8, 6, 9, 7]‌ـه. بعد in و sum() و max() می‌خوننش: 9 توش هست، جمع آیتم‌ها 30 می‌شه، و بزرگ‌ترینشون 9‌ـه.

items = ["شیر", "نون"]
items.append("چای")
print(items)
print(len(items))
print(items[-1])

خروجی

['شیر', 'نون', 'چای']
3
چای

یه فهرست خرید که بزرگ‌تر می‌شه. بعد از append، «چای» سومین آیتمه، توی اندیس 2، که همون items[-1] هم هست. مثل قبل، لیست با گیومه‌ی تکی چاپ می‌شه.

خودت رو امتحان کن

items = ["milk", "eggs"]
items.____("tea")
print(items)

append · add · len · pop

جواب رو ببین

append

درسته. append() کلمه‌ی tea رو به آخر اضافه می‌کنه، و لیست به‌صورت ['milk', 'eggs', 'tea'] چاپ می‌شه.

خودت رو امتحان کن

  1. names = ["Sara", "Omid", "Negar"]
  2. print(names[3])
جواب رو ببین

اشکال توی خط ۲.

پیداش کردی. سه تا اسم توی جایگاه‌های 0 و 1 و 2 نشستن، پس names[3] بعد از آخر لیسته: IndexError: list index out of range. آخرین اسم names[2]‌ـه، یا names[-1].

مرور درس

  • لیست مقدارها رو به ترتیب زیر یه اسم نگه می‌داره: scores = [8, 5, 9].
  • جایگاه‌ها از 0 شروع می‌شن و [-1] آخرین آیتمه؛ آخرین اندیس همیشه len(scores) - 1‌ـه.
  • خواستن جایگاهی بعد از آخر لیست، مثل scores[3] اینجا، IndexError می‌ده، همون اشتباه معروف یکی‌کم‌یکی‌زیاد.
  • لیست‌ها عوض می‌شن: scores[1] = 6 جایگزین می‌کنه، append() به آخر اضافه می‌کنه، remove() و pop() آیتم برمی‌دارن.
  • in و sum() و max() و min() لیست رو می‌خونن؛ sorted() یه لیست جدید پس می‌ده، ولی sort() خود لیست رو عوض می‌کنه.

فقط نخونش، نگهش دار

پث‌وایز هر ایده رو درست قبل از اینکه فراموشش کنی با یه سؤال کوتاه برمی‌گردونه. رایگان روی اندروید و وب، به فارسی و انگلیسی.

Cafe Bazaar Myket باز کردن نسخه‌ی وب

همه‌ی درس‌های این دوره

  1. اولین برنامه‌ت (Your First Program)
  2. متغیرها: اسم برای مقدارها (Variables)
  3. رشته‌ها: کار با متن (Strings)
  4. ورودی و نوع داده‌ها (Input and Types)
  5. تصمیم‌گیری با if (Conditionals)
  6. لیست‌ها: کلی مقدار یه‌جا (Lists)
  7. حلقه‌ها: دوباره و دوباره (Loops)
  8. تابع‌ها: به یه کار اسم بده، دوباره استفاده‌ش کن (Functions)
  9. دیکشنری‌ها: پیدا کردن با اسم (Dictionaries)
  10. خوندن پیام‌های خطا (Reading Errors)
  11. ذخیره و خوندن فایل (Files)
  12. پروژه‌ی آخر: حساب خرج‌ها (Final Project)