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

در این راهنما، ما نکات و زوایای آن را بررسی خواهیم کرد zip() با مثال‌های ساده و کاربردی که به شما در درک روش استفاده مؤثر از آن کمک می‌کند.

چگونه zip() عملکرد کار؟

را zip() تابع عناصر را از تکرارپذیرهای متعدد، مانند لیست ها، بر اساس جفت می کند روی مواضع آنها این بدان معنی است که عناصر اول هر لیست جفت می شوند، سپس دومی و غیره روی. اگر طول تکرار شونده ها یکسان نباشد، zip() در انتهای کوتاه ترین تکرار شونده متوقف می شود.

نحو برای zip() بسیار سرراست است:

zip(*iterables)

می توانید چندین تکرار (فهرست، تاپل و غیره) را ارسال کنید روی) و آنها را به صورت تاپلی ترکیب می کند.

مثال 1: ترکیب دو لیست

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

# Two lists to combine
names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 88]

# Using zip() to combine them
zipped = zip(names, scores)

# Convert the result to a list so we can see it
zipped_list = list(zipped)
print(zipped_list)

در این مثال، zip() تابع دو لیست را می گیرد –names و scores– و آنها را عنصر به عنصر جفت می کند. اولین عنصر از names ("Alice") با اولین عنصر از جفت می شود scores (85) و غیره روی. هنگامی که نتیجه را به یک لیست تبدیل می کنیم، به نظر می رسد:

خروجی:

[('Alice', 85), ('Bob', 90), ('Charlie', 88)]

این کار کار با داده های مرتبط را به روشی ساختاریافته آسان می کند.

مثال 2: وقتی لیست ها ناهموار هستند چه اتفاقی می افتد؟

فرض کنید لیست هایی با طول های مختلف دارید. آن وقت چه اتفاقی می افتد؟ را zip() عملکرد آنقدر هوشمند است که به محض رسیدن به انتهای کوتاهترین لیست متوقف شود.

# Lists of different lengths
fruits = ["apple", "banana"]
prices = [100, 200, 150]

# Zipping them together
result = list(zip(fruits, prices))
print(result)

در این مورد، fruits لیست دارای دو عنصر است و prices لیست دارای سه است. اما zip() تنها دو عنصر اول را با هم ترکیب می‌کند و مقدار اضافی موجود را نادیده می‌گیرد prices.

خروجی:

[('apple', 100), ('banana', 200)]

توجه کنید که چگونه آخرین مقدار (150) در prices لیست نادیده گرفته می شود زیرا میوه سومی برای جفت کردن آن وجود ندارد. را zip() عملکرد تضمین می کند که هنگام کار با لیست های ناهموار با خطا مواجه نمی شوید، اما همچنین به این معنی است که اگر لیست های شما متعادل نباشد ممکن است برخی از داده ها را از دست بدهید.

پیشنهاد می‌کنیم بخوانید:  PySpark برای مبتدیان – روش پردازش داده ها با Apache Spark و Python

مثال 3: باز کردن یک شی زیپ شده

اگر بخواهید آن را معکوس کنید چه می شود zip() عملیات؟ به عنوان مثال، پس از فشرده سازی دو لیست با هم، ممکن است بخواهید آنها را به لیست های جداگانه تقسیم کنید. شما می توانید این کار را به راحتی با استفاده از عملگر باز کردن بسته بندی انجام دهید *.

# Zipped lists
cities = ["New York", "London", "Tokyo"]
populations = [8000000, 9000000, 14000000]

zipped = zip(cities, populations)

# Unzipping them
unzipped_cities, unzipped_populations = zip(*zipped)

print(unzipped_cities)
print(unzipped_populations)

در اینجا، ابتدا فایل را فشرده می کنیم cities و populations لیست ها با هم سپس، با استفاده از zip(*zipped)، می‌توانیم تاپل‌های ترکیب شده را به دو لیست مجزا بازگردانیم. را * اپراتور تاپل های زیپ شده را در اجزای اصلی خود باز می کند.

خروجی:

('New York', 'London', 'Tokyo')
(8000000, 9000000, 14000000)

این نشان می دهد که چگونه می توانید زیپ را معکوس کنید process برای بازگرداندن داده های اصلی

مثال 4: فشرده سازی بیش از دو لیست

شما فقط به دو لیست محدود نمی شوید zip(). می توانید هر تعداد تکرار شونده را که می خواهید فشرده کنید. در اینجا یک مثال با سه لیست آورده شده است.

# Three lists to zip
subjects = ["Math", "English", "Science"]
grades = [88, 79, 92]
teachers = ["Mr. Smith", "Ms. Johnson", "Mrs. Lee"]

# Zipping three lists together
zipped_info = zip(subjects, grades, teachers)

# Convert to a list to see the result
print(list(zipped_info))

در این مثال، ما سه لیست را فشرده می کنیم-subjects، grades، و teachers. اولین مورد از هر لیست با هم گروه بندی می شود، سپس مورد دوم و غیره روی.

خروجی:

[('Math', 88, 'Mr. Smith'), ('English', 79, 'Ms. Johnson'), ('Science', 92, 'Mrs. Lee')]

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

پیشنهاد می‌کنیم بخوانید:  روش ایجاد یک انیمیشن بارگیری در React از ابتدا هنگام ایجاد برنامه های React که محتوا را از منابع خارجی واکشی می کنند و بارگذاری آن مدتی طول می کشد، همیشه ایده خوبی است که با درگیر کردن کاربران و حفظ توجه آنها با لودر، تجربه ای دلپذیر برای کاربر فراهم کنید. این به کاربران کمک می کند تا بفهمند چه اتفاقی می افتد روی به جای رفتن...

مثال 5: زیپ رشته ها

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

# Zipping two strings
str1 = "ABC"
str2 = "123"

# Zipping the characters together
zipped_strings = list(zip(str1, str2))
print(zipped_strings)

در اینجا، اولین شخصیت از str1 با شخصیت اول ترکیب شده است str2، و غیره روی.

خروجی:

[('A', '1'), ('B', '2'), ('C', '3')]

این به ویژه در صورت نیاز مفید است process یا کاراکترهای چند رشته را با هم جفت کنید.

مثال 6: دیکشنری های فشرده

اگرچه لغت نامه ها کمی با لیست ها متفاوت هستند، اما همچنان می توانید از آن استفاده کنید zip() برای ترکیب آنها. به طور پیش فرض، zip() فقط کلیدهای فرهنگ لغت را فشرده می کند. بیایید به یک مثال نگاه کنیم:

# Two dictionaries
dict1 = {"name": "Alice", "age": 25"}
dict2 = {"name": "Bob", "age": 30"}

# Zipping dictionary keys
zipped_keys = list(zip(dict1, dict2))
print(zipped_keys)

اینجا، zip() کلیدهای هر دو فرهنگ لغت را جفت می کند.

خروجی:

[('name', 'name'), ('age', 'age')]

اگر می خواهید مقادیر دیکشنری ها را فشرده کنید، می توانید این کار را با استفاده از .values() روش:

zipped_values = list(zip(dict1.values(), dict2.values()))
print(zipped_values)

خروجی:

[('Alice', 'Bob'), (25, 30)]

حالا به راحتی می توانید مقادیر دو دیکشنری را با هم ترکیب کنید.

مثال 7: استفاده از zip() در حلقه ها

یکی از رایج ترین موارد استفاده از zip() وقتی می خواهید در حلقه است process چندین لیست به طور همزمان در اینجا یک مثال است:

# Lists of names and scores
names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 88]

# Using zip() in a loop
for name, score in zip(names, scores):
    print(f"{name} scored {score}")

این حلقه روی هر دو مورد تکرار می شود names و scores به طور همزمان لیست می کند و هر نام را با امتیاز مربوط به آن جفت می کند.

خروجی:

Alice scored 85
Bob scored 90
Charlie scored 88

با استفاده از zip() در حلقه‌هایی مانند این، کد شما را هنگام کار با داده‌های مرتبط پاک‌تر و راحت‌تر می‌کند.

نتیجه گیری

را zip() function یک ابزار مفید در پایتون است که به شما امکان می‌دهد چندین تکرار را در تاپل‌ها ترکیب کنید و کار با داده‌های مرتبط را آسان‌تر کنید. فرقی نمی‌کند آیتم‌ها را از فهرست‌ها، تاپل‌ها یا رشته‌ها جفت کنید، zip() کد شما را ساده می کند و می تواند به ویژه در حلقه ها مفید باشد.

با مثال های موجود در این مقاله، اکنون باید درک خوبی از روش استفاده داشته باشید zip() در سناریوهای مختلف

اگر این توضیح پایتون را پیدا کردید zip() عملکرد مفید است، همچنین ممکن است از آموزش های برنامه نویسی عمیق و مفاهیمی که من پوشش می دهم لذت ببرید روی وبلاگ من

کد نویسی مبارک!