رفتن به مطلب اصلی

لیست

یکی از انواع داده کالکشن، لیست (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)

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