سلام خدمت شما خوبان ، با مطلبی در مورد نوع داده ای لیست در پایتون (lists/tuple) در خدمت شماهستم . امیدوارم که براتون مفید باشه .اساسی ترین ساختار داده ای در پایتون sequence (زنجیره ای از بایت ها) می باشد. به هر یک از المان های یک sequence یک عدد اختصاص داده می شود که همان شماره ی مکان قرار گیری یا اندیس می باشد. اندیس در زبان پایتون از صفر آغاز می شود.
پایتون در کل ۶ نوع داده ای که ساختار آن sequence می باشد، ارائه می دهد که پرکاربردترین آن ها عبارتند از list ها و tuple ها.

عملیات خاصی وجود دارد که می توان بر روی انواع داده ای که دارای ساختاری sequence و دنباله دار هستند انجام داد. این عملیات شامل فهرست کردن با اندیس، برش، اضافه کردن، ضرب و بررسی عضویت می باشد. بعلاوه، پایتون دارای توابع درون ساخته (توکار) می باشد که طول یک دنباله را بدست آورده و بزرگترین یا کوچکترین المان های آن را پیدا/مشخص می کند.

نوع داده ای list

list تطبیق پذیرترین نوع داده ای در پایتون می باشد که به صورت یک لیست نوشته می شود و آیتم های آن توسط ویرگول محصور در [] از یکدیگر جدا می شوند. مهم ترین نکته ای که بایستی درباره ی نوع داده ای لیست به خاطر داشت، این است که آیتم های محصور در آن باید از یک نوع باشد.

لیست به مجموعه‌ای داده‌ ای اشاره دارد که به صورت عادی به هم مرتبط اند. به جای ذخیره این داده‌ها به عنوان متغیرهای جداگانه ما می‌توانیم آن‌ها در یک لیست ذخیره کنیم.

ایجاد و اعلان یک لیست به سادگی قرار دادن مقادیری بین [] و تفکیک آن ها به وسیله ی ویرگول می باشد. مثال:

list1 = [‘physics’, ‘chemistry’, 1997, 2000];

list2 = [1, 2, 3, 4, 5 ];

list3 = [“a”, “b”, “c”, “d”];

درست مشابه اندیس رشته، اندیس لیست ها از صفر آغاز می شود. بر روی لیست عملیاتی همچون برش (slice) و اتصال (concatenation) را می توان اجرا کرد.

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

جهت دسترسی به مقادیر یک لیست، بایستی اندیس شروع و پایان را داخل [] فراهم نمود، با این کار مقادیری که در آن شماره ی مکان قرارگیری یا اندیس ذخیره شده اند، قابل دسترسی می شوند.

#!/usr/bin/python

list1 = [‘physics’, ‘chemistry’, 1997, 2000];

list2 = [1, 2, 3, 4, 5, 6, 7 ];

print “list1[0]: “, list1[0]

print “list2[1:5]: “, list2[1:5]

پس از اجرا کد، نتیجه ی زیر بدست می آید:

list1[0]: physics

list2[1:5]: [2, 3, 4, 5]

بروز رسانی لیست ها

می توان مقدار یک لیست را برش داده و آن را با مقدار دیگری جایگزین نمود و از این طریق آن لیست را بروز رسانی کرد. برای این منظور در سمت راست عملگر تخصیص علامت [] و اندیس مقدار مربوطه را تایپ کنید. همچنین با استفاده از متد append() می توان عناصری را به لیست جاری الحاق کرد.

#!/usr/bin/python

list = [‘physics’, ‘chemistry’, 1997, 2000];

print “Value available at index 2 : “

print list[2]

list[2] = 2001;

print “New value available at index 2 : “

print list[2]

پس از اجرای کد، نتیجه ی زیر حاصل می گردد:

Value available at index 2 :

۱۹۹۷

New value available at index 2 :

۲۰۰۱

حذف المان های لیست

برای حذف المان مورد نظر از لیست، اگر المان خاصی مورد نظرتان است دستور del و اگر آیتم مشخصی برای حذف مد نظر ندارید، متد remove() را بکار ببرید.

#!/usr/bin/python

list1 = [‘physics’, ‘chemistry’, 1997, 2000];

print list1

del list1[2];

print “After deleting value at index 2 : “

print list1

نتیجه ی بدست می آید:

‘physics’, ‘chemistry’, 1997, 2000]

After deleting value at index 2 :

[‘physics’, ‘chemistry’, 2000]

عملیات ابتدایی که روی لیست اجرا می شود

عملگرهای * و + در لیست همان عملیاتی را انجام می دهند که در رشته اجرا می کنند. همان طور که می دانید هر یک به ترتیب عملیات تکرار و اتصال را صورت می دهند، با این تفاوت که خروجی یک لیست جدید می باشد و نه یک رشته.

بر روی لیست می توان همان عملیات رایجی که بر روی ساختارهای دنباله ای (sequence) همچون رشته قابل اجرا می باشد، انجام داد.

عبارت پایتون

نتیجه

شرح

len([1, 2, 3])

۳

Length

(طول)

[۱, ۲, ۳] + [۴, ۵, ۶]

[۱, ۲, ۳, ۴, ۵, ۶]

Concatenation

(اتصال)

[‘Hi!’] * 4

[‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’]

Repetition

(تکرار)

۳ in [1, 2, 3]

True

Membership

(عضویت)

for x in [1, 2, 3]: print x,

۱ ۲ ۳

Iteration

(حلقه تکرار)

اندیس گذاری، برش و ماتریس

از آن جایی که list ها زیرمجموعه ی ساختار داده ای sequence هستند، اندیس گذاری و اتصال در هر دو نوع داده ای لیست و رشته یکسان می باشد.

ورودی زیر را درنظر داشته باشید:

L = [‘spam’, ‘Spam’, ‘SPAM!’]

عبارت

نتیجه

شرح

L[2]

‘SPAM!’

اندیس از صفر آغاز می شود، می شمارد و نتیجه را برمی گرداند.

L[-2]

‘Spam’

اگر منفی بود از سمت راست می شمارد و برمی گرداند.

L[1:]

[‘Spam’, ‘SPAM!’]

از یک اندیسی به بعد را بازمی گرداند.

توابع و متدهای توکار لیست در پایتون

شماره ی متد

تابع مورد نظر با شرح عملکرد آن

۱

cmp(list1, list2)

المان های موجود در دو لیست را با هم مقایسه می کند.

۲

len(list)

طول کلی لیست را بازمی گرداند.

۳

max(list)

آیتمی که بیشترین مقدار را دارد از میان آیتم های موجود در لیست بازمی گرداند.

۴

min(list)

آیتمی با کوچکترین مقدار را از میان آیتم های موجود در لیست بازمی گرداند.

۵

list(seq)

نوع داده ای tuple را به list تبدیل می کند.

متدهای مربوط به لیست:

شماره ی متد

متد مورد نظر با شرح آن

۱

list.append(obj)

این متد شی پاس داده شده به عنوان ورودی را به لیست اضافه می کند.

۲

list.count(obj)

تعداد دفعاتی که شی مورد نظر در لیست تکرار شده را برمی گرداند.

۳

list.extend(seq)

محتویات پارامتر ورودی (seq) را به لیست الحاق می کند.

۴

list.index(obj)

اندیس یا شماره ی مکان قرار گیری شی را در لیست برمی گرداند.

۵

list.insert(index, obj)

شی پاس داده شده به متد را در اندیس مشخص شده درج می کند.این متد دو پارامتر می گیرد که اولی اندیس را مشخص می کند و دومی شی ای که باید در آن شماره ی مکان قرار گیری وارد شود.

۶

list.pop(obj=list[-1])

آخرین شی موجود در لیست را برش داده و برمی گرداند. پارامتر دومی اختیاری است که نشانگر اندیس شی ای که باید برش داده شود می باشد.

۷

list.remove(obj)

شی مورد نظر (مشخص شده داخل پرانتز) را از لیست حذف می کند.

۸

list.reverse()

مکان قرارگیری اشیا در لیست را معکوس (جابجا) می کند.

۹

list.sort([func])

اشیا یک لیست را مرتب می سازد.