list slices

  • مدرس: علی بیگدلی
  • تاریخ انتشار: Aug 24, 2020

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

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[2:6])
print(squares[3:8])
print(squares[0:1])

خروجی:

>>>
[4, 9, 16, 25]
[9, 16, 25, 36, 49]
[0]
>>>

نکته:همانند آرگومان هایی برای Range، اولین شاخص ارائه شده در یک slice در نتیجه گنجانده شده است، اما در slice دوم آن نیست. اگر شماره اول در یک slice حذف شده باشد،مقدارش برای شروع لیست در نظر گرفته شده است. اگر عدد دوم حذف شده باشد، مقدارش برای پایان در نظر گرفته شده است. مثال:

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[:7])
print(squares[7:])

خروجی:

>>>
[0, 1, 4, 9, 16, 25, 36]
[49, 64, 81]
>>>

نکته:sliceنیز می تواند بر روی tuple نیز انجام شود. لیست های slice همچنین می توانند یک عدد سوم داشته باشند، که نشان دهنده مرحله است، فقط شامل مقادیر جایگزین در slice می شود.

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[::2])
print(squares[2:8:3])

خروجی:

>>>
[0, 4, 16, 36, 64]
[4, 25]
>>>

نکته:[2: 8: 3] شامل عناصر شروع از 2 تا 8 با واسته 3 تایی است. مقادیر منفی را می توان در slice لیست (و فهرست بندی عادی لیست) استفاده کرد. وقتی مقادیر منفی برای مقادیر اول و دوم در یک تکه (یا یک شاخص عادی) استفاده می شود، از پایان لیست محاسبه می شود.

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[1:-1])

خروجی:

>>>
[1, 4, 9, 16, 25, 36, 49, 64]
>>>

نکته:اگر یک مقدار منفی برای این مرحله استفاده شود، slice برعکس انجام خواهد شد. با استفاده از [:: - 1] به عنوان یک slice یک روش رایج و اصیل برای تبدیل یک لیست است.

ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
4دیدگاه
  • Atefeh Rostami
    2 years, 2 months ago

    درود

    من لیستی دارم که تعداد اعضای اونو نمیدونم. بدون دستور len چجور میتونم مقادیر لیست را از ابتدا تا انتها پرینت کنم؟ دستور [1-::] از انتها به ابتدا پرینت میکنه

    • علی بیگدلی
      2 years, 2 months ago

      برای دیدن اجزای لیست نیازی به len نیست می تونید با for پیمایش کنید
      شاخصی که دارید بهش اشاره می کنید برای اجیاد تغییر در لیست هستش و نه پیمایش

  • Al Tah
    2 years, 6 months ago

    سلام خسته نباشيد
    با چه دستوري ميشه slice رو از اول به آخر پرينت كرد؟
    با [:: - 1] ارور داد

    • علی بیگدلی
      2 years, 6 months ago

      [1-::]
      به چینش دقت کنین آخرین مورد جایگشت هاب رو به -1 تغییر بدید رشته ورودی رو برعکس می کنه