কম্পিউটার

পাইথনে তারকা এক্সপ্রেশন ব্যবহার করে কীভাবে আনপ্যাক করবেন?


পরিচয়

আনপ্যাকিং এর একটি মৌলিক সীমাবদ্ধতা হল যে আপনি যে সিকোয়েন্সগুলি আনপ্যাক করছেন তার দৈর্ঘ্য আপনাকে আগে থেকেই জানতে হবে৷

কিভাবে করবেন..

এলোমেলো_সংখ্যা =[0, 1, 5, 9, 17, 12, 7, 10, 3, 2]এলোমেলো_সংখ্যা_অন্তর্ভুক্ত =সাজানো(এলোমেলো_সংখ্যা, বিপরীত=সত্য)মুদ্রণ(f"আউটপুট \n*** {random_numbers_descending}" )

আউটপুট

*** [17, 12, 10, 9, 7, 5, 3, 2, 1, 0] 

যদি আমি এখন সংখ্যা থেকে বৃহত্তম এবং দ্বিতীয় বৃহত্তম খুঁজে বের করতে চাই, তাহলে আমরা একটি ব্যতিক্রম পাব "আনপ্যাক করার জন্য অনেকগুলি মান"।

মুদ্রণ(f"আউটপুট \n*** বৃহত্তম এবং দ্বিতীয় বৃহত্তম") বৃহত্তম, দ্বিতীয়_বৃহৎ =এলোমেলো_সংখ্যা_অবরোহ

আউটপুট

*** বৃহত্তম এবং দ্বিতীয় বৃহত্তম পাওয়া


<পূর্ব>------------------------------------------------------------ ---------------------------- মান ত্রুটি ট্রেসব্যাক (সর্বাধিক সাম্প্রতিক কল শেষ) 1 প্রিন্টে(f"আউটপুট \n*** বৃহত্তম পাওয়া এবং দ্বিতীয় বৃহত্তম")----> 2টি বৃহত্তম, দ্বিতীয়_বৃহৎ =এলোমেলো_সংখ্যা_ডিসেন্ডিং ভ্যালুইরর:আনপ্যাক করার জন্য অনেকগুলি মান (প্রত্যাশিত 2)

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

সবচেয়ে বড় =random_numbers_decending[0]print(f"আউটপুট \n*** সবচেয়ে বড় পাওয়া হচ্ছে - {বৃহৎতম}")

আউটপুট

*** সবচেয়ে বড় পাওয়া - 17


second_largest =random_numbers_decending[1]print(f"আউটপুট \n*** দ্বিতীয় বৃহত্তম - {second_largest}")

আউটপুট

*** দ্বিতীয় বৃহত্তম পাওয়া - 12


rest_of_numbers =random_numbers_decending[2:]print(f"আউটপুট \n*** বাকি সংখ্যাগুলি পাওয়া যাচ্ছে - {rest_of_numbers}")

আউটপুট

*** বাকি নম্বর পাওয়া - [10, 9, 7, 5, 3, 2, 1, 0]

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

এটি আরও ভাল করার জন্য, পাইথন একটি তারকাচিহ্নিত অভিব্যক্তির মাধ্যমে ক্যাচ-অল আনপ্যাকিং সমর্থন করে।

এই তারকাচিহ্নিত সিনট্যাক্স আনপ্যাকিং অ্যাসাইনমেন্টের একটি অংশকে সমস্ত মান পেতে দেয় যা আনপ্যাকিং প্যাটার্নের অন্য কোনও অংশের সাথে মেলে না।

সবচেয়ে বড়,দ্বিতীয়_সর্বাধিক, *rest_of_numbers =random_numbers_descendingprint(f"আউটপুট \n বৃহত্তম:{largest} \n দ্বিতীয়_বৃহৎ:{second_largest} \n rest_of_numbers:{rest_of_numbers}")

আউটপুট

সবচেয়ে বড়:17second_largest:12best_of_numbers:[10, 9, 7, 5, 3, 2, 1, 0] 

উপরের কোড দেখতে কেমন? একটি একক লাইনে যা পড়াও সহজ আমরা আউটপুট অর্জন করতে সক্ষম। একটি তারকাচিহ্নিত অভিব্যক্তি যেকোন অবস্থানে উপস্থিত হতে পারে, তাই আপনি যখনই একটি স্লাইস বের করতে হবে তখনই আপনি ক্যাচ-অল আনপ্যাক করার সুবিধা পেতে পারেন

সবচেয়ে বড়:17বাকী_অফ_সংখ্যা:[12, 10, 9, 7, 5, 3, 2, 1]সবচেয়ে ছোট:0


*rest_of_numbers, second_smallest, smallest =random_numbers_descendingprint(f"আউটপুট \n rest_of_numbers:{rest_of_numbers} \n দ্বিতীয়_smallest:{second_smallest} \n ক্ষুদ্রতম:{smallest}")


বিশ্রামের_সংখ্যা:[17, 12, 10, 9, 7, 5, 3, 2]দ্বিতীয়_ছোটতম:1 ক্ষুদ্রতম:0

যাইহোক, একটি তারকাচিহ্নিত অভিব্যক্তি রয়েছে এমন অ্যাসাইনমেন্টগুলি আনপ্যাক করতে, আপনার অবশ্যই কমপক্ষে একটি প্রয়োজনীয় অংশ থাকতে হবে, অন্যথায় আপনি একটি সিনট্যাক্স ত্রুটি পাবেন। আমরা নিজে থেকে ক্যাচ-অল এক্সপ্রেশন ব্যবহার করতে পারি না।

*rest_of_numbers =random_numbers_decending


ফাইল "", লাইন 1*rest_of_numbers =random_numbers_descending^SyntaxError:তারকাচিহ্নিত অ্যাসাইনমেন্ট টার্গেট অবশ্যই একটি তালিকা বা টিপলে থাকতে হবে

আমরা একক-স্তরের আনপ্যাকিং প্যাটার্নে একাধিক ক্যাচ-অল এক্সপ্রেশন ব্যবহার করতে পারি না। এটি বিবেচনা করার জন্য আরেকটি গুরুত্বপূর্ণ নোট।

*rest_of_numbers, *more_smallest, smallest =random_numbers_descending


ফাইল "", লাইন 1*rest_of_numbers, *more_smallest, smallest =random_numbers_decending^SyntaxError:অ্যাসাইনমেন্টে দুটি তারকাচিহ্নিত অভিব্যক্তি


কিন্তু একটি আনপ্যাকিং অ্যাসাইনমেন্ট স্টেটমেন্টে একাধিক তারকাচিহ্নিত এক্সপ্রেশন ব্যবহার করা সম্ভব, যতক্ষণ না তারা মাল্টিলেভেল স্ট্রাকচারের বিভিন্ন অংশের জন্য ক্যাচ-অল হয়।

player_grandslame_and_atptitles ={'Federer':(20, 103), 'Nadal':(20,84),}((player1, (grandslam1, *atptitles1)), (player2, (grandslam2, *atptitles2))) =player_grandslame_and_atptitles.items()print(f'Output \nPlayer - {player1} অর্জন করেছে {grandslam1} গ্রান্ডস্লাম এবং , {atptitles1} atp ট্যুর শিরোনাম')মুদ্রণ(f'Player - {player2} অর্জন করেছে} গ্রান্ডস্লাম এবং 2} {atptitles2} atp ট্যুর শিরোনাম')


আউটপুট


খেলোয়াড় - ফেদেরার 20টি গ্র্যান্ডস্লাম এবং , [103] এটিপি ট্যুর খেতাব প্লেয়ার - নাদাল 20টি গ্র্যান্ডস্লাম এবং , [84] এটিপি ট্যুর শিরোপা অর্জন করেছেন

তারকাচিহ্নিত অভিব্যক্তি সব ক্ষেত্রেই তালিকার উদাহরণ হয়ে ওঠে। আনপ্যাক করা ক্রম থেকে কোনো অবশিষ্ট আইটেম না থাকলে, ক্যাচ-অল অংশটি একটি খালি তালিকা হবে। এটি বিশেষভাবে উপযোগী যখন আপনি এমন একটি ক্রম প্রক্রিয়া করছেন যা আপনি আগে থেকেই জানেন যেটিতে কমপক্ষে N উপাদান রয়েছে৷

এলোমেলো_সংখ্যা =[0, 1]প্রথম, দ্বিতীয়, *বিশ্রাম =এলোমেলো_সংখ্যার ছাপ(f"আউটপুট \n{প্রথম, দ্বিতীয়, বাকি}")

আউটপুট

(0, 1, [])

  1. রেগুলার এক্সপ্রেশন ব্যবহার করে পাইথনে শুধুমাত্র ডিজিট কিভাবে মেলে?

  2. রেগুলার এক্সপ্রেশন ব্যবহার করে পাইথনে একটি হোয়াইটস্পেস কীভাবে মেলে?

  3. রেগুলার এক্সপ্রেশন ব্যবহার করে পাইথনে একটি শব্দ কিভাবে মেলে?

  4. কিভাবে Python ব্যবহার করে একটি ফাইল মুছে ফেলতে হয়?