فهرستها و مجموعهٔ دادهها
چند مقدار را کنار هم نگه دار، تغییر بده، مرتب کن و از متن استخراج کن.
بعد از این فصل میتوانی…
- فهرست بسازی و اعضایش را تغییر بدهی.
- با append، sort و تابعهای آماری کار کنی.
- متن را با split به فهرست تبدیل کنی.
پیشنهاد برای پیشنیاز: خواندن فایلهای متنی
فهرستها و مجموعهٔ دادهها
ویدیوی این فصل هنوز اضافه نشده است. میتوانی همین حالا آموزش متنی و تمرینها را شروع کنی.
یک نام، چند مقدار
فهرست یا list چند مقدار را با ترتیب مشخص نگه میدارد. اعضا داخل [] و با ویرگول جدا میشوند. فهرست خالی [] است و اعضا میتوانند نوعهای مختلف یا حتی فهرست باشند.
اندیسها از صفر شروع میشوند. برخلاف رشته، فهرست تغییرپذیر است و میتوان به یک اندیس مقدار تازه داد.
اصلاح یک نمره
scores = [12, 15, 18]
scores[1] = 17
print(scores)
print(len(scores))خروجی مورد انتظار
[12, 17, 18] 3
پیمایش مستقیم و range
اگر خود مقدار را لازم داری، for score in scores خواناست. اگر باید بر اساس موقعیت تغییر ایجاد کنی، از range(len(scores)) برای اندیسها استفاده کن.
در پایتون ۳، range یک شیء قابل پیمایش است، نه فهرست آماده. list(range(4)) فهرست [0, 1, 2, 3] میسازد. عدد پایان داخل بازه نیست.
افزودن یک امتیاز
scores = [12, 15, 18]
for index in range(len(scores)):
scores[index] += 1
print(scores)خروجی مورد انتظار
[13, 16, 19]
افزودن، حذف، برش و مرتبسازی
append یک عضو به انتها اضافه میکند و remove اولین عضو با مقدار دادهشده را حذف میکند؛ اگر آن مقدار نباشد خطا میدهد. in برای بررسی وجود عضو مفید است.
sort خود فهرست را مرتب میکند و None برمیگرداند. sorted یک فهرست مرتبشدهٔ جدید میسازد. برش و + نیز فهرست تازه میسازند.
فهرست خرید
items = ["book", "pen"]
items.append("bag")
items.remove("pen")
items.sort()
print(items)
print(items[:1])خروجی مورد انتظار
['bag', 'book'] ['bag']
محاسبه با فهرست
len تعداد اعضا، sum مجموع، min کمترین و max بیشترین را میدهد. برای میانگین فهرست عددی از sum(values) / len(values) استفاده کن.
فهرست خالی را پیش از میانگین یا min/max بررسی کن؛ تقسیم بر صفر یا درخواست کمترینِ هیچ عضو خطا میدهد.
خلاصهٔ نمرهها
scores = [12, 18, 15]
if scores:
print(min(scores), max(scores))
print(sum(scores) / len(scores))خروجی مورد انتظار
12 18 15.0
split و استخراج دومرحلهای
split() متن را بر اساس فاصلههای سفید به واژهها میشکند. با split(";") جداکننده را خودت تعیین میکنی. نتیجه فهرستی از رشتههاست، حتی اگر متنها شبیه عدد باشند.
برای یک خط ایمیلِ دارای ساختار معلوم، ابتدا واژهها را جدا کن و سپس آدرس را بر اساس @ بشکن. در دادهٔ واقعی پیش از اندیسگذاری تعداد قطعهها را بررسی کن.
دامنه با دو split
line = "From sara@example.org Saturday"
words = line.split()
email = words[1]
pieces = email.split("@")
print(pieces[1])خروجی مورد انتظار
example.org
میانگین ورودیهای متنی
ورودی «12 18 15» را به بخشها تقسیم کن، هر بخش را float کن و به فهرست اضافه کن. میانگین را چاپ کن؛ برای ورودی خالی پیام مناسب بده.
یک راهنمای کوچک
در حلقه scores.append(float(part)) را به کار ببر؛ قبل از تقسیم خالی نبودن scores را بررسی کن.
پاسخ پیشنهادی و خروجی
parts = input().split()
scores = []
for part in parts:
scores.append(float(part))
if scores:
print(sum(scores) / len(scores))
else:
print("دادهای وارد نشده")خروجی نمونه
15.0
خودآزمایی
پاسخ را انتخاب کن و دلیل آن را بخوان. این بخش برای تمرین است و نمرهٔ رسمی ثبت نمیکند.