پرش به مطلب اصلی

لیست

یکی از انواع داده کالکشن، لیست (list) هست. برای آشنایی با لیست بهتره که اول یک مثال بزنم:

heyvanat = ['gorbe', 'sag', 'mahi', 'khers']

طبق کد بالا، برای تعریف لیست باید یک اسم برای لیستمون انتخاب کنیم. مواردی که میخوایم توی لیست باشن باید توی کوتیشن ' ' یا کوتیشن دوبل " " باشن. هر کدوم از اونها هم باید با ویرگول , از هم جدا بشن. توی لیست میشه داده‌های مختلف مثل رشته، عدد و ... گذاشت و حتی میشه مثلا عدد رو با رشته توی یک لیست گذاشت.

numbers = [1, 15, 7, 20, 12, 99, 2, 18, 105, 87]

دسترسی به عناصر لیست

برای دسترسی به عناصر یک لیست باید از اندیس (index) اونها استفاده کنیم. همچنین باید بگم که اندیس‌ها توی پایتون از "صفر" شروع میشن! برای روشن شدن اندیس صفر به جدول زیر که برای لیست numbers هست دقت کنید:

9876543210اندیس
871051829912207151مقدار

همونطور که میبینید، مثلا اگر بخوایم عدد 1 رو پرینت کنیم، باید اندیس 0 رو فراخونی کنیم. اگر بخوایم عدد 99 رو چاپ کنیم، باید اندیس 5 رو فراخونی کنیم. نحوه فراخونی هم به شکل زیره:

print(numbers[0])  print(numbers[5])  print(numbers[6])

لیست بالا 10 تا عنصر داره و اندیسش از 0 تا 9 شماره گذاری شده (برای اینکه مطمئن بشین، با انگشتاتون از 0 تا 9 بشمارین که مطمئن بشین 10 تا عنصر داره). ولی اگر ما اندیس 15 رو صدا بزنیم، با ارور مواجه میشیم چون اصلا اندیس 15 وجود نداره!

!! یک نکته جالبی توی فراخونی اندیس هست که یکم شاید اوایل کار با اون گیج کننده باشه ولی خیلی کاربردیه! الان گفتیم اندیس از 0 شروع میشه و این فراخونی از اول لیست هست. ولی ما میتونیم با استفاده از شماره گذاری منفی از آخر لیست عناصر رو فراخونی کنیم! جدول زیر رو ببینید:

9-8-7-6-5-4-3-2-1-0اندیس
871051829912207151مقدار

همونطور که میبینید، اندیس منفی از 0 شروع نمیشه و از 1- شروع میشه. مثال‌های زیر رو تست کنید تا ببینید داستان چیه:

print(numbers[-1])  print(numbers[-5])  print(numbers[-6])

میشه عناصر لیست رو به صورت‌های مختلف از اون بیرون کشید. کد زیر عناصر 1 تا 5 رو پرینت میگیره:

print(numbers[1:5])

کد زیر عناصر 1 تا 1- رو پرینت میگیره:

print(numbers[1:-1])

کد زیر از عنصر دوم تا آخر لیست رو پرینت میگیره:

print(numbers[2:])

کد زیر از اولین عنصر تا عنصر 5 ام رو پرینت میگیره:

print(numbers[:5])

حتی میشه عناصر رو مثلا یکی در میون یا دو تا در میون پرینت کرد. این کار با استفاده از عدد سوم انجام میشه:

print(numbers[::2])

کد زیر از عنصر اول تا عنصر 9 ام رو به صورت یکی در میون پرینت میگیره:

print(numbers[1:9:2])

لیست‌ها قابل تغییر هستن. میتونیم هر زمان که دوست داریم عناصری رو تغییر بدیم، پاک کنیم یا حتی عنصری به لیست اضافه کنیم. توی پایتون، اندازه لیست‌ها به صورت داینامیک تغییر میکنه و لازم نیست که خودمون اندازه لیستمون رو تغییر بدیم و پایتون این کار رو برامون میکنه.

کد زیر 8 رو تغییر میده:

numbers[8] = 999 print(numbers)

تابع ()append

کد زیر عنصری رو اضافه میکنه به انتهای لیست:

numbers.append(1024) print(numbers)

تابع ()insert

کد زیر عنصری رو به مکان 3 زیر اضافه میکنه و بقیه عناصر یک خونه به راست میرن تا جا برای عنصر جدید باز بشه:

numbers.insert(3,1024) print(numbers)

تابع ()remove

کد زیر هم عنصر 6 رو پاک میکنه:

numbers.remove(6) print(numbers)

تابع ()count

توی لیست میشه عناصر تکراری گذاشت. مثلا اگر دستور زیر رو اجرا کنیم، به ما میگه عدد 1024 دوبار توی لیست تکرار شده:

print(numbers.count(1024))

تابع ()index

با کد زیر میتونیم بفهمیم که مقداری که اندیس دوم داره چیه:

print(numbers.index(2))

تابع ()len

کد زیر طول لیست رو نشون میده:

tool = len(numbers) print(tool)

تابع ()sort

میتونیم لیستمون رو مرتب کنیم. مثلا اعدادمون رو از کوچیک به بزرگ مرتب کنیم:

print(numbers.sort())

تابع ()reverse

کد زیر عناصر لیست رو برعکس میکنه:

print(numbers.reverse())

یه نکته بسیار مهم راجع به لیست‌ها این هست که ما میتونیم لیست‌های چند بعدی داشته باشیم. برای اینکه تصورش راحت تر بشه، میتونید یک ماتریس 2*4 رو در نظر بگیرید که 4 تا سطر داره و 2 تا ستون.

x = [[3,6],[6,7],[1,2],[5,25]]

اگر بخوایم سطر دوم رو کامل پرینت کنیم از دستور زیر استفاده می کنیم:

print(x[2])

اگر هم میخوایم عنصر خاصی مثلا سطر دوم و ستون اول رو پرینت کنیم، از کد زیر استفاده می کنیم:

print(x[2][1])

البته شاید اینطوری که نگاه کنین، بگین این اصلا شبیه ماتریس نیست و یکم سخت باشه کار کردن براتون، برای همین میتونین به شکل زیر بنویسید و خود پایتون میفهمه شما منظورتون چیه:

y = [ [2,2], [6,1], [3,10], [11,6] ]
print(y)

یعنی هر ویرگولی که میذارید، پایتون میفهمه شما منظورتون اینه برید سطر بعدی!