لیست

لیست ها نوعی متغیر می باشند که می توان در آن ها داده ها و اطلاعات از انواع مختلف را ذخیره کرد

  • به طور مثال در کد زیر لیستی به نام L طراحی شده است که در آن یک متغیر از نوع رشته یا string و یک float یا عدد اعشاری و یک integer یا عدد صحیح در آن وجود دارد
>>>L=[ 'mahdy' , 20 , 1.2 ]

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

در هر لیست هر کدام از داده ها یا مقدار ها دارای شماره یا اندیسی می باشند که این عدد به طور خودکار از سمت چپ لیست به هر مقدار داده می شود

  • عدد اندیس بین صفر و بی نهایت است و به ترتیب از چپ به راست به مقدار های درون لیست داده می شود.
[ 'mahdy' , 20 , 1.2 ]

در مثال بالا رشته ی 'mahdy' با اندیس 0 و عدد 20 با اندیس 1 و عدد اعشاری 1.2 با اندیس 2 مشخص می شوند برای بدست آوردن داده ی یک اندیس کافی است فقط اندیس مورد نظر را درون [] جلوی نام لیست قرار دهیم.

>>>L=[ 'mahdy' , 20 , 1.2 ]
>>>L[1]
20

باید دانست که همیشه لیست ها همانند نمونه بالا ساده نیستند و ممکن است یک لیست درون لیست دیگری قرار داشته باشد. برای دستیابی به داده ی لیست درونی تر باید از روش پیچیده تری استفاده نمایید. برای روشنتر شدن مطلب لطفا به مثال زیر توجه کنید:

>>>L=[ 'mahdy' , 20 , [ 'ali' , 99 ] , 1.2]
>>>L[2][0]
'ali'

در مثال بالا دیدید که اندیس اول([2]L) به داده ای اشاره دارد که خود یک لیست می باشد([ ali' , 99' ]) و اندیس دوم ([0][2]L)به داده ی درون این لیست اشاره دارد('ali'). این روش قابل تعمیم به لیست هایی با پیچیدگی بیشتر است.

نکته 1: اگر درون [] عبارت محاسبه ای قرار بگیرد ابتدا عبارت محاسبه می شود و سپس بقیه عملیات طبق روال توضیح داده شده در بالا انجام می پذیرند. نکته 2: اگر اندیس قرار گرفته در [] در محدوده شماره ی اندیس ها نباشد پیغام خطا ظاهر می شود. نکته 3: از خواص لیست ها انتساب هر یک از داده های درون لیست به متغیرهایی است که همگی تشکیل یک لیست می دهند. نکته 4: در شماره گزاری اندیس ها درلیست برنامه نویس دخیل نیست بدین ترتیب که می توان از راست به چپ هم به داده ها درون لیست دسترسی داشت. در این صورت اندیس از -1 شروع شده و به صورت نزولی اندیسها شماره گزاری میشوند.البته انتخاب هر روش به دلخواه برنامه نویس است. نکته 5: فقط اپراتورهای + و * بر روی لیست ها تعریف شده اند که اپراتور + بین یک لیست و لیستی دیگر تعریف شده و اپراتور * بین یک لیست و یک عدد تعریف شده است که نیازی به توضیح بیشتر نیست.


دسترسی به مجموعه ای از داده های درون لیست

خوب شاید ما بخواهیم به چندتا از داده های درون لیست دسترسی داشته باشیم برای این کار به جای [] از [:] استفاده می کنیم به مثال زیر توجه کنید.

>>>L=[ 'mahdy' , 'ali' , 100 , 99 , 'reza' , 20 ]
>>>L[1:5]
['ali', 100, 99, 'reza']

خوب دیدید که L[1:5] از داده ای که اندیسش 1 است تا ماقبل 5 را درون یک لیست قرار میدهد نکته1:اگر در سمت راست علامت : عددی بیشتر از محدوده قرار بگیرد یا عددی نوشته نشود پیغام خطایی ظاهر نمی شود بلکه تا آخرین خانه ی لیست در نظر گرفته می شود و برعکس. نکته2:اگر شماره طوری باشند که از چپ به راست آخرین داده برابر یا قبل از داده ی اولی باشد حاصل یک لیست تهی است .

>>>L=[ 'mahdy' , 'ali' , 100 , 99 , 'reza' , 20 ]
>>>L[1:]
[ 'ali' , 100 , 99 , 'reza' , 20 ]
>>>L[1:1]  
[]

تغییر مقادیر درون لیست

خوب لیست ها از داده های تغییر پذیرند و می توان با استفاده از عمل انتساب (=) مقادیر یک لیست را تغییر داد

>>>L=[ 'mahdy' , 'ali' , 100 , 99 , 'reza' , 20 ]
>>>L[1] = 'boys'
>>>L[1]
'boys'
>>>L
['mahdy' , 'boys' , 100 , 99 , 'reza' , 20 ]

اضافه کردن داده در لیست

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

>>>L=[ 1 , 2 , 3 ]
>>>L[3:3] = [4]
>>>L
[ 1 , 2 , 3 , 4 ]

حذف داده از لیست

برای حذف داده می توانیم از عمل انتساب استفاده کنیم بدین ترتیب که داده را به [] انتساب بدهیم

>>>L=[ 1 , 2 , 3 , 4 ]
>>>L[1:2] = []
>>>L
[ 1 , 3 , 4 ]

نكته مهم در اين قسمت اين است كه L[1:2] تنها بخشي از ليست را حذف مي كند كه انديس آن 1 است . حال اگر بنويسم L[0:2] بخشهايي كه انديس آن 0 و 1 است حذف مي شود . يعني پارامترهاي ما از ابتدا تا قبل از انتها

با استفاده از دستور del می توان هر داده یا کل لیست را حذف کرد

متدهای مهم لیست (با فرض اینکه L لیست باشد)

۱ L.append(x) داده ی x را به انتهای لیست L اضافه کن
۲ L.remove(x) داده ی x را از لیست L حذف کن
۳ L.index(x) اندیس x در لیست L را برمی گرداند
۴ L.count(x) تعداد دفعات تکرار x را در لیست L را برمی گرداند
۵ L.extend(x) لیست x را با لیست L الحاق می کند
۶ L.insert(I,x) داده ی x را درشماره اندیس I به لیست اضافه می کند

صفحه قبلی: پایتون
صفحه بعدی: PyGTK