Python में टपल क्रम में रखे आइटमों का एक अपरिवर्तनीय संग्रह है।
ज़्यादातर संग्रहों की तरह tuples किसी भी (या एक से अधिक) डेटा टाइप की चीज़ें रख सकते हैं, जिनमें दूसरे tuples भी शामिल हैं।
टपल सामान्य अनुक्रम ऑपरेशन का समर्थन करते हैं, लेकिन परिवर्तनीय अनुक्रम ऑपरेशन का समर्थन नहीं करते।
टपल के एलिमेंट पर for item in <tuple> रचना की मदद से इटरेशन किया जा सकता है।
अगर एलिमेंट का इंडेक्स और वैल्यू दोनों चाहिए, तो for index, item in enumerate(<tuple>) इस्तेमाल किया जा सकता है।
किसी भी अनुक्रम की तरह tuples के अंदर के एलिमेंट तक ब्रैकेट नोटेशन से पहुँचा जा सकता है, बाईं ओर से 0-based index संख्या या दाईं ओर से -1-based index संख्या इस्तेमाल करके।
टपल को पूरा या उसका कोई हिस्सा स्लाइस नोटेशन (<tuple>[<start>:<stop>:<step>]) की मदद से कॉपी भी किया जा सकता है।
टपल कई तरीकों से बनाए जा सकते हैं: या तो tuple(<iterable>) क्लास कंस्ट्रक्टर से, या tuple लिटरल डिक्लेरेशन से।
tuple() कंस्ट्रक्टर को खाली या किसी इटरेबल के साथ इस्तेमाल करना:>>> no_elements = tuple()
()
# The constructor *requires* an iterable, so single elements must be passed in a list or another tuple.
>>> one_element = tuple([16])
(16,)
स्ट्रिंग भी इटरेबल होती हैं, इसलिए tuple() कंस्ट्रक्टर को आर्गुमेंट के तौर पर अकेली str देना चौंकाने वाले नतीजे दे सकता है:
# String elements (characters) are iterated through and added to the tuple
>>> multiple_elements_string = tuple("Timbuktu")
('T', 'i', 'm', 'b', 'u', 'k', 't', 'u')
अकेले इटरेबल के एलिमेंट एक-एक करके जोड़े जाते हैं:
>>> multiple_elements_list = tuple(["Parrot", "Bird", 334782])
("Parrot", "Bird", 334782)
>>> multiple_elements_set = tuple({2, 3, 5, 7, 11})
(2,3,5,7,11)
चूँकि tuple(<iterable>) कंस्ट्रक्टर आर्गुमेंट के तौर पर सिर्फ इटरेबल (या कुछ नहीं) लेता है, इसलिए एक-एलिमेंट वाला टपल लिटरल तरीके से बनाना कहीं ज़्यादा आसान है।
>>> no_elements = ()
()
>>> one_element = ("Guava",)
("Guava",)
नेस्टेड डेटा स्ट्रक्चर को tuple के एलिमेंट के रूप में शामिल किया जा सकता है, जिनमें दूसरे tuples भी शामिल हैं:
>>> nested_data_structures = ({"fish": "gold", "monkey": "brown", "parrot" : "grey"}, ("fish", "mammal", "bird"))
({"fish": "gold", "monkey": "brown", "parrot" : "grey"}, ("fish", "mammal", "bird"))
>>> nested_data_structures_1 = (["fish", "gold", "monkey", "brown", "parrot", "grey"], ("fish", "mammal", "bird"))
(["fish", "gold", "monkey", "brown", "parrot", "grey"], ("fish", "mammal", "bird"))
टपल को प्लस + ऑपरेटर से जोड़ा जा सकता है, जो हर tuple को खोलकर एक नया, संयुक्त tuple बनाता है।
>>> new_via_concatenate = ("George", 5) + ("cat", "Tabby")
("George", 5, "cat", "Tabby")
#likewise, using the multiplication operator * is the equivalent of using + n times
>>> first_group = ("cat", "dog", "elephant")
>>> multiplied_group = first_group * 3
('cat', 'dog', 'elephant', 'cat', 'dog', 'elephant', 'cat', 'dog', 'elephant')
tuple के अंदर के एलिमेंट तक ब्रैकेट नोटेशन से पहुँचा जा सकता है, बाईं ओर से 0-based index संख्या या दाईं ओर से -1-based index संख्या इस्तेमाल करके।
student_info = ("Alyssa", "grade 3", "female", 8 )
#gender is at index 2 or index -2
>>> student_gender = student_info[2]
'female'
>>> student_gender = student_info[-2]
'female'
#name is at index 0 or index -4
>>> student_name = student_info[0]
Alyssa
>>> student_name = student_info[-4]
Alyssa
tuple के अंदर के एलिमेंट पर लूप में for item in <tuple> सिंटैक्स की मदद से इटरेशन किया जा सकता है।
अगर इंडेक्स और वैल्यू दोनों चाहिए, तो for index, item in enumerate(<tuple>) इस्तेमाल किया जा सकता है।
>>> student_info = ("Alyssa", "grade 3", "female", 8 )
>>> for item in student_info:
... print(item)
...
Alyssa
grade 3
female
8
>>> for index, item in enumerate(student_info):
... print("Index is: " + str(index) + ", value is: " + str(item) +".")
...
Index is: 0, value is: Alyssa.
Index is: 1, value is: grade 3.
Index is: 2, value is: female.
Index is: 3, value is: 8.
tuple में सदस्यता जाँचने के लिए in ऑपरेटर इस्तेमाल किया जा सकता है।
>>> multiple_elements_list = tuple(["Parrot", "Bird", 334782])
("Parrot", "Bird", 334782)
>>> "Parrot" in multiple_elements_list
True
अज़ारा और रुई साथी हैं, जो समुद्री डाकुओं की थीम वाली एक खज़ाने की खोज में हिस्सा ले रहे हैं। एक के पास नक्शे के निर्देशांकों के साथ खज़ानों की सूची है, और दूसरे के पास नक्शे के निर्देशांकों के साथ जगहों के नामों की सूची है। उन्हें खाली नक्शे भी दिए गए हैं, जिन पर शुरुआत की जगह YOU ARE HERE लिखकर चिह्नित है।
| अज़ारा की सूची | रुई की सूची | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
लेकिन चीज़ें थोड़ी बिखरी हुई हैं: अज़ारा के निर्देशांक रुई के निर्देशांकों से अलग ढंग से फॉर्मेट और क्रमबद्ध किए गए लगते हैं, और यह पता लगाने के लिए कि कौन-सा खज़ाना किस जगह के साथ जाता है, उन्हें बार-बार एक सूची से दूसरी सूची में देखना पड़ता है। नए-नए pythonista होने के नाते, वे अपनी खोज की जानकारी को बेहतर ढंग से व्यवस्थित करने के लिए एक छोटा-सा प्रोग्राम (वास्तव में कुछ फंक्शन) लिखने में मदद के लिए आपके पास आए हैं।
get_coordinate() फंक्शन बनाइए, जो अज़ारा की सूची से एक (treasure, coordinate) जोड़ा लेता है और सिर्फ नक्शे से निकाला गया निर्देशांक लौटाता है।
>>> get_coordinate(('Scrimshawed Whale Tooth', '2A'))
2A
convert_coordinate() फंक्शन बनाइए, जो "2A" प्रारूप वाला एक निर्देशांक लेता है और ("2", "A") प्रारूप में एक टपल लौटाता है।
>>> convert_coordinate("2A")
("2", "A")
compare_records() फंक्शन बनाइए, जो एक (treasure, coordinate) जोड़ा और एक (location, coordinate, quadrant) रिकॉर्ड लेता है और दोनों के निर्देशांकों की तुलना करता है।
अगर निर्देशांकों का "मिलान" होता है, तो True लौटाइए, और अगर मिलान नहीं होता, तो False लौटाइए।
सही तुलना के लिए ज़रूरत पड़ने पर निर्देशांक का प्रारूप बदल लीजिए।
>>> compare_records(('Brass Spyglass', '4B'), ('Seaside Cottages', ('1', 'C'), 'blue'))
False
>>> compare_records(('Model Ship in Large Bottle', '8A'), ('Harbor Managers Office', ('8', 'A'), 'purple'))
True
create_record() फंक्शन बनाइए, जो अज़ारा की सूची से एक (treasure, coordinate) जोड़ा और रुई की सूची से एक (location, coordinate, quadrant) रिकॉर्ड लेता है और अगर निर्देशांकों का मिलान होता है तो (treasure, coordinate, location, coordinate, quadrant) लौटाता है।
अगर निर्देशांकों का मिलान नहीं होता, तो स्ट्रिंग "not a match" लौटाइए।
सही तुलना के लिए ज़रूरत पड़ने पर निर्देशांक का प्रारूप बदल लीजिए।
>>> create_record(('Brass Spyglass', '4B'), ('Abandoned Lighthouse', ('4', 'B'), 'Blue'))
('Brass Spyglass', '4B', 'Abandoned Lighthouse', ('4', 'B'), 'Blue')
>>> create_record(('Brass Spyglass', '4B'), ('Seaside Cottages', ('1', 'C'), 'blue'))
"not a match"
अज़ारा और रुई के जोड़े गए रिकॉर्ड को ऐसे साफ कीजिए कि हर रिकॉर्ड में निर्देशांकों का सिर्फ एक समूह रहे।
एक रिपोर्ट बनाइए, ताकि वे एक ही सूची में देख सकें कि उन्हें अपने नक्शों पर क्या-क्या डालना है।
clean_up() फंक्शन बनाइए, जो टपलों का एक टपल लेता है (दोनों सूचियों की सारी चीज़ें), बाहरी टपल पर लूप चलाता है, हर अंदरूनी टपल से अनचाहे निर्देशांक हटाता है और हर एक को एक 'report' में जोड़ता है।
'report' को ऐसे रूप में लौटाइए कि हर पंक्ति में एक साफ किया गया रिकॉर्ड हो।
>>> clean_up((('Brass Spyglass', '4B', 'Abandoned Lighthouse', ('4', 'B'), 'Blue'), ('Vintage Pirate Hat', '7E', 'Quiet Inlet (Island of Mystery)', ('7', 'E'), 'Orange'), ('Crystal Crab', '6A', 'Old Schooner', ('6', 'A'), 'Purple')))
"""
('Brass Spyglass', 'Abandoned Lighthouse', ('4', 'B'), 'Blue')\n
('Vintage Pirate Hat', 'Quiet Inlet (Island of Mystery)', ('7', 'E'), 'Orange')\n
('Crystal Crab', 'Old Schooner', ('6', 'A'), 'Purple')\n
"""
Exercism पर साइन अप कीजिए और Python को 17 कॉन्सेप्ट146 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।