برنامه نویسی

نمایه سازی منفی در پایتون، با مثال 🐍

پایتون به دلیل سادگی و خوانایی اش شناخته شده است و آن را به یک انتخاب محبوب برای مبتدیان و توسعه دهندگان باتجربه تبدیل می کند. یکی از ویژگی هایی که به انعطاف پذیری آن کمک می کند، نمایه سازی منفی است.

در این آموزش به این می پردازم که نمایه سازی منفی چیست، چگونه کار می کند و کاربردهای عملی آن در برنامه نویسی پایتون.

فهرست مطالب


1. مقدمه ای بر نمایه سازی

نمایه سازی راهی برای دسترسی به عناصر منفرد از دنباله هایی مانند لیست ها، رشته ها و تاپل ها در پایتون است.

به هر عنصر در یک دنباله یک شاخص منحصر به فرد اختصاص داده می شود که از 0 شروع می شود.

به عنوان مثال، در لیست numbers = [10, 20, 30, 40, 50]، شاخص عنصر اول (10) 0، عنصر دوم (20) 1 و غیره است.

مثال:

numbers = [10, 20, 30, 40, 50]
print(numbers[0])  # Output: 10
print(numbers[1])  # Output: 20
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2. در مورد نمایه سازی منفی چطور؟

نمایه سازی منفی یک ویژگی قدرتمند در پایتون است که به شما امکان می دهد از انتهای یک دنباله به عناصر دسترسی داشته باشید.

به جای شروع از 0، شاخص های منفی از 1- شروع می شوند که مربوط به آخرین عنصر دنباله است.

این می تواند به ویژه زمانی مفید باشد که شما نیاز به کار با عناصر در انتهای یک دنباله دارید بدون اینکه مشخصاً طول آن را بدانید.

مثال:

numbers = [10, 20, 30, 40, 50]
print(numbers[-1])  # Output: 50
print(numbers[-2])  # Output: 40
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. استفاده از نمایه سازی منفی در لیست ها

نمایه سازی منفی می تواند به ویژه زمانی مفید باشد که شما نیاز به دسترسی به عناصر انتهای لیست بدون اطلاع از طول آن دارید.

این به شما این امکان را می دهد که به راحتی لیست ها را با ارجاع به عناصر انتهایی دستکاری کنید.

مثال:

numbers = [10, 20, 30, 40, 50]
# Accessing the last element
print(numbers[-1])  # Output: 50

# Accessing the second last element
print(numbers[-2])  # Output: 40
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همچنین می توانید از نمایه سازی منفی برای برش دادن لیست ها استفاده کنید.

مثال:

numbers = [10, 20, 30, 40, 50]
# Slicing the last three elements
print(numbers[-3:])  # Output: [30, 40, 50]

# Slicing from the second last to the last element
print(numbers[-2:])  # Output: [40, 50]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

4. نمایه سازی منفی با رشته ها

درست مانند لیست ها، رشته ها نیز از نمایه سازی منفی پشتیبانی می کنند. این ویژگی به شما اجازه می دهد تا با زیر رشته ها از انتهای رشته کار کنید.

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

مثال:

text = "Hello, World!"
# Accessing the last character
print(text[-1])  # Output: '!'

# Accessing the second last character
print(text[-2])  # Output: 'd'
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

شما همچنین می توانید رشته ها را با استفاده از شاخص های منفی برش دهید.

مثال:

text = "Hello, World!"
# Slicing the last 5 characters
print(text[-5:])  # Output: 'orld!'

# Slicing from the second last to the end
print(text[-2:])  # Output: 'd!'
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

5. نمایه سازی منفی در تاپل ها

تاپل ها که دنباله های تغییرناپذیر هستند، از نمایه سازی منفی نیز پشتیبانی می کنند. این می تواند برای دسترسی به عناصر بدون تغییر تاپل مفید باشد.

مثال:

coordinates = (1, 2, 3, 4, 5)
# Accessing the last element
print(coordinates[-1])  # Output: 5

# Accessing the second last element
print(coordinates[-2])  # Output: 4
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

6. نمایه سازی منفی در برش

برش با شاخص های منفی می تواند به ویژه قدرتمند باشد. این امکان استخراج انعطاف‌پذیرتر و شهودی دنباله‌های فرعی از فهرست‌ها، رشته‌ها و تاپل‌ها را فراهم می‌کند.

مثال:

# Reversing a list
numbers = [10, 20, 30, 40, 50]
reversed_numbers = numbers[::-1]
print(reversed_numbers)  # Output: [50, 40, 30, 20, 10]

# Skipping elements
skip_elements = numbers[::2]
print(skip_elements)  # Output: [10, 30, 50]

# Reversing a string
text = "Hello, World!"
reversed_text = text[::-1]
print(reversed_text)  # Output: '!dlroW ,olleH'
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

7. مثال های عملی

معکوس کردن یک لیست

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

numbers = [10, 20, 30, 40, 50]
reversed_numbers = numbers[::-1]
print(reversed_numbers)  # Output: [50, 40, 30, 20, 10]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

می‌توانید از نمایه‌سازی منفی برای بررسی اینکه آیا یک رشته یک رشته پالیندروم است (رشته‌ای که جلو و عقب یکسان می‌خواند) استفاده کنید.

def is_palindrome(s):
    return s == s[::-1]

print(is_palindrome("radar"))  # Output: True
print(is_palindrome("python"))  # Output: False
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چرخاندن یک لیست

شما می توانید یک لیست را با استفاده از نمایه سازی منفی به سمت راست بچرخانید. این می تواند به ویژه در الگوریتم هایی که چرخش لیست مورد نیاز است مفید باشد.

def rotate_right(lst, k):
    k = k % len(lst)  # Handle rotation greater than list length
    return lst[-k:] + lst[:-k]

numbers = [10, 20, 30, 40, 50]
rotated_numbers = rotate_right(numbers, 2)
print(rotated_numbers)  # Output: [40, 50, 10, 20, 30]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

8. موارد استفاده پیشرفته

پارتیشن بندی لیست پویا

از نمایه سازی منفی می توان برای پارتیشن بندی پویا لیست ها بر اساس شرایط یا محاسبات استفاده کرد. این به ویژه در سناریوهایی مانند پردازش داده ها یا هنگام کار با مجموعه داده های پویا مفید است.

data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Split data into two parts: last 3 elements and the rest
split_point = -3
part1, part2 = data[:split_point], data[split_point:]
print(part1)  # Output: [1, 2, 3, 4, 5, 6, 7]
print(part2)  # Output: [8, 9, 10]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پردازش دم کارآمد

هنگام کار با گزارش‌ها یا جریان‌دادن داده‌ها، ممکن است اغلب لازم باشد فقط جدیدترین ورودی‌ها را پردازش کنید. نمایه سازی منفی با امکان دسترسی سریع به انتهای لیست این کار را ساده می کند.

log_entries = ["entry1", "entry2", "entry3", "entry4", "entry5"]

# Get the last 2 log entries
recent_entries = log_entries[-2:]
print(recent_entries)  # Output: ['entry4', 'entry5']
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پنجره کشویی برای داده های سری زمانی

برای تجزیه و تحلیل سری های زمانی، ممکن است لازم باشد با پنجره های کشویی کار کنید. نمایه سازی منفی می تواند به شما در مدیریت آسان این پنجره ها کمک کند.

time_series = [100, 200, 300, 400, 500, 600, 700]

# Get the last 3 elements as a sliding window
window_size = 3
sliding_window = time_series[-window_size:]
print(sliding_window)  # Output: [500, 600, 700]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

9. دام های رایج و نحوه اجتناب از آنها

نمایه خارج از محدوده

نمایه سازی منفی گاهی اوقات می تواند منجر به IndexError شود اگر به درستی مدیریت نشود. اطمینان حاصل کنید که شاخص های منفی شما در محدوده طول دنباله قرار دارند.

مثال:

numbers = [10, 20, 30, 40, 50]

# This will raise an IndexError
try:
    print(numbers[-6])
except IndexError as e:
    print(e)  # Output: list index out of range
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استفاده از شاخص منفی در برش با مرحله

هنگام برش با یک پله، مراقب شاخص های منفی باشید تا از سردرگمی جلوگیری کنید و از درست بودن جهت برش اطمینان حاصل کنید.

مثال:

numbers = [10, 20, 30, 40, 50]

# This will return an empty list because the start is after the stop
print(numbers[-1:-3:-1])  # Output: [50, 40]

# Correct way
print(numbers[-3:-1])  # Output: [30, 40]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

10. نتیجه گیری

نمایه سازی منفی یک ویژگی ساده و در عین حال قدرتمند در پایتون است که می تواند کد شما را مختصرتر و خواناتر کند.

با استفاده از شاخص های منفی، می توانید بدون نیاز به محاسبه موقعیت آنها به عناصر در انتهای دنباله ها دسترسی داشته باشید و آنها را دستکاری کنید.

با دنباله های مختلف آزمایش کنید و ببینید چگونه می توان از نمایه سازی منفی برای حل مشکلات دنیای واقعی در پروژه های شما استفاده کرد.

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا