পাইথনে টিপল এবং তালিকা আনপ্যাক করুন (একাধিক ভেরিয়েবলকে প্রসারিত করুন এবং বরাদ্দ করুন)

ব্যবসায়

পাইথনে, একটি টিপল বা তালিকার উপাদানগুলিকে প্রসারিত করা যেতে পারে এবং একাধিক ভেরিয়েবলে বরাদ্দ করা যেতে পারে। একে বলে সিকোয়েন্স আনপ্যাকিং বা আনপ্যাকড অ্যাসাইনমেন্ট।

নিম্নলিখিত বিবরণ এখানে বর্ণনা করা হয়.

  • টিপল এবং তালিকার মূল বিষয়গুলি আনপ্যাক করা
  • নেস্টেড টিপল, আনপ্যাক করা তালিকা
  • আন্ডারস্কোর দিয়ে আনপ্যাক করা হচ্ছে:_
  • তারকাচিহ্ন দিয়ে আনপ্যাক করা হচ্ছে:*

ফাংশন আর্গুমেন্ট হিসাবে tuples, তালিকা, এবং অভিধান প্রসারিত এবং পাস করার জন্য তারকাচিহ্ন ব্যবহার সম্পর্কে তথ্যের জন্য নিম্নলিখিত নিবন্ধটি দেখুন।

টিপল এবং তালিকার মূল বিষয়গুলি আনপ্যাক করা

যখন ভেরিয়েবলগুলি বাম দিকে লেখা হয়, কমা দ্বারা পৃথক করা হয়, তখন প্রতিটি ভেরিয়েবলকে ডানদিকের টিপল বা তালিকার একটি উপাদান বরাদ্দ করা হয়। এটি টিপল এবং তালিকা উভয়ের জন্যই একই (নিম্নলিখিত উদাহরণগুলি টিপল আকারে লেখা হয়েছে)।

t = (0, 1, 2)

a, b, c = t

print(a)
print(b)
print(c)
# 0
# 1
# 2

l = [0, 1, 2]

a, b, c = l

print(a)
print(b)
print(c)
# 0
# 1
# 2

নোট করুন যে যেহেতু টিপলগুলি বৃত্তাকার বন্ধনীগুলি বাদ দিতে পারে, এটি নিম্নরূপ একটি একক লাইনে একাধিক ভেরিয়েবলে একাধিক মান বরাদ্দ করতে ব্যবহার করা যেতে পারে।

a, b = 0, 1

print(a)
print(b)
# 0
# 1

যদি ভেরিয়েবলের সংখ্যা উপাদানের সংখ্যার সাথে মেলে না, একটি ত্রুটি ঘটে।

# a, b = t
# ValueError: too many values to unpack (expected 2)

# a, b, c, d = t
# ValueError: not enough values to unpack (expected 4, got 3)

যদি ভেরিয়েবলের সংখ্যা উপাদানের সংখ্যার চেয়ে কম হয়, তবে অবশিষ্ট উপাদানগুলি পরিবর্তনশীল নামের সাথে একটি তারকাচিহ্ন যুক্ত করে একটি তালিকা হিসাবে বরাদ্দ করা যেতে পারে (নীচে দেখুন)।

নেস্টেড টিপল, আনপ্যাক করা তালিকা

নেস্টেড টিপল এবং তালিকাগুলিও আনপ্যাক করা যেতে পারে। আপনি যদি বিষয়বস্তুগুলিও আনপ্যাক করতে চান তবে নিম্নলিখিতগুলির মধ্যে একটিতে ভেরিয়েবলটি আবদ্ধ করুন

  • ()
  • []
t = (0, 1, (2, 3, 4))

a, b, c = t

print(a)
print(b)
print(c)
# 0
# 1
# (2, 3, 4)

print(type(c))
# <class 'tuple'>

a, b, (c, d, e) = t

print(a)
print(b)
print(c)
print(d)
print(e)
# 0
# 1
# 2
# 3
# 4

_আন্ডারস্কোর_ দিয়ে আনপ্যাক করা হয়েছে।

পাইথনে, শুধুমাত্র আনপ্যাক করা নয়, প্রয়োজন নেই এমন মানগুলিকে প্রচলিতভাবে আন্ডারস্কোর (আন্ডারস্কোর) _ এ বরাদ্দ করা হয়। কোন বিশেষ ব্যাকরণগত অর্থ নেই; তারা সহজভাবে _ নামের একটি ভেরিয়েবলে বরাদ্দ করা হয়।

t = (0, 1, 2)

a, b, _ = t

print(a)
print(b)
print(_)
# 0
# 1
# 2

তারকাচিহ্ন দিয়ে আনপ্যাক করা হচ্ছে

ভেরিয়েবলের সংখ্যা উপাদানের সংখ্যার চেয়ে কম হলে, ভেরিয়েবলের নামের একটি তারকাচিহ্নের কারণে উপাদানগুলিকে একটি তালিকা হিসাবে একসাথে বরাদ্দ করা হবে।

এই সিনট্যাক্সটি পাইথন 3 থেকে প্রয়োগ করা হয়েছে এবং পাইথন 2 এ উপলব্ধ নয়।

এলিমেন্টগুলি শুরু থেকে শেষ থেকে ভেরিয়েবলের জন্য অ্যাস্টেরিক্স ছাড়াই বরাদ্দ করা হয় এবং বাকি উপাদানগুলি অ্যাস্টেরিক্স সহ ভেরিয়েবলের তালিকা হিসেবে অ্যাসাইন করা হয়।

t = (0, 1, 2, 3, 4)

a, b, *c = t

print(a)
print(b)
print(c)
# 0
# 1
# [2, 3, 4]

print(type(c))
# <class 'list'>

a, *b, c = t

print(a)
print(b)
print(c)
# 0
# [1, 2, 3]
# 4

*a, b, c = t

print(a)
print(b)
print(c)
# [0, 1, 2]
# 3
# 4

উদাহরণস্বরূপ, আপনি যদি একটি ভেরিয়েবলের জন্য একটি টিপল বা তালিকার শুধুমাত্র প্রথম দুটি উপাদান বরাদ্দ করতে চান, তাহলে আপনি উপরের আন্ডারস্কোরটি এমন অংশগুলির জন্য ব্যবহার করতে পারেন যেগুলির প্রয়োজন নেই৷

a, b, *_ = t

print(a)
print(b)
print(_)
# 0
# 1
# [2, 3, 4]

একই নিম্নরূপ লেখা যেতে পারে

a, b = t[0], t[1]

print(a)
print(b)
# 0
# 1

শুধুমাত্র একটি তারকাচিহ্ন সংযুক্ত করা যেতে পারে। যদি একটি তারকাচিহ্ন দিয়ে চিহ্নিত একাধিক ভেরিয়েবল থাকে, তাহলে একটি SyntaxError ত্রুটি দেখা দেবে কারণ প্রতিটি ভেরিয়েবলের জন্য কতগুলি উপাদান বরাদ্দ করা হয়েছে তা নির্ধারণ করা সম্ভব নয়।

# *a, b, *c = t
# SyntaxError: two starred expressions in assignment

মনে রাখবেন যে এমনকি একটি একক উপাদান একটি তালিকা হিসাবে চিহ্নিত একটি ভেরিয়েবলের সাথে চিহ্নিত করা হয়েছে।

t = (0, 1, 2)

a, b, *c = t

print(a)
print(b)
print(c)
# 0
# 1
# [2]

print(type(c))
# <class 'list'>

কোন অতিরিক্ত উপাদান না থাকলে, একটি খালি তালিকা বরাদ্দ করা হয়।

a, b, c, *d = t

print(a)
print(b)
print(c)
print(d)
# 0
# 1
# 2
# []
Copied title and URL