آموزش پایتون - بازکردن بسته تاپل

بازکردن بسته‌بندی اعضای تاپل

اصطلاح «بازکردن بسته‌بندی» به فرایند تجزیه اعضای یک تاپل و قرار دادن آن‌ها در متغیرهای جداگانه اشاره دارد. در پایتون، پرانتزها به‌طور پیش‌فرض برای مشخص کردن نمایش لفظی یک شیء دنباله‌ای استفاده می‌شوند.

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

>>> t1 = (x,y)
>>> t1 = x,y
>>> type (t1)
<class 'tuple'>

مثال

برای ذخیره اعضای تاپل در متغیرهای جداگانه، همان‌طور که در مثال زیر نشان داده شده است، از چندین متغیر در سمت چپ عملگر انتساب استفاده کنید −

tup1 = (10,20,30)
x, y, z = tup1
print ("x: ", x, "y: ", "z: ",z)

خروجی زیر تولید خواهد شد −

x: 10 y: 20 z: 30

به این ترتیب، اعضای تاپل در متغیرهای جداگانه قرار می‌گیرند.

در مثال بالا، تعداد متغیرهای سمت چپ عملگر انتساب با تعداد اعضای تاپل برابر است. اما اگر این تعداد برابر نباشد، چه اتفاقی می‌افتد؟

خطای ValueError هنگام بازکردن بسته‌بندی تاپل

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

مثال

tup1 = (10,20,30)
x, y = tup1
x, y, p, q = tup1

خروجی زیر تولید خواهد شد −

  x, y = tup1
  ^^^^
ValueError: too many values to unpack (expected 2)
  x, y, p, q = tup1
  ^^^^^^^^^^
ValueError: not enough values to unpack (expected 4, got 3)

بازکردن بسته‌بندی اعضای تاپل با استفاده از ستاره (*)

در چنین شرایطی، از نماد "*" برای بازکردن بسته‌بندی استفاده می‌شود. همان‌طور که در زیر نشان داده شده است، علامت "*" را پیش از "y" قرار دهید −

مثال ۱

tup1 = (10,20,30)
x, *y = tup1
print ("x: ", "y: ", y)

خروجی زیر تولید خواهد شد −

x: y: [20, 30]

مقدار اول تاپل به "x" اختصاص داده می‌شود و بقیه اعضا به "y" اختصاص می‌یابند که به یک فهرست تبدیل می‌شود.

مثال ۲

در این مثال، تاپل شامل ۶ مقدار است و تعداد متغیرهایی که باید مقادیر در آن‌ها قرار بگیرند، ۳ عدد است. علامت "*" را پیش از متغیر دوم قرار می‌دهیم.

tup1 = (10,20,30, 40, 50, 60)
x, *y, z = tup1
print ("x: ",x, "y: ", y, "z: ", z)

خروجی زیر تولید خواهد شد −

x: 10 y: [20, 30, 40, 50] z: 60

در اینجا ابتدا مقادیر به "x" و "z" اختصاص داده می‌شوند و سپس بقیه مقادیر به‌صورت یک فهرست در "y" قرار می‌گیرند.

مثال ۳

اگر علامت "*" را به متغیر اول اضافه کنیم، چه اتفاقی می‌افتد؟

tup1 = (10,20,30, 40, 50, 60)
*x, y, z = tup1
print ("x: ",x, "y: ", y, "z: ", z)

خروجی زیر تولید خواهد شد −

x: [10, 20, 30, 40] y: 50 z: 60

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

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.