आप कैसे सत्यापित करते हैं कि किसी सूची या टुपल में सभी तत्वों का प्रकार समान और एक निश्चित प्रकार का है?टेस्ट प्रकार के तत्व पायथन ट्यूपल/सूची
उदाहरण के लिए:
(1, 2, 3) # test for all int = True
(1, 3, 'a') # test for all int = False
आप कैसे सत्यापित करते हैं कि किसी सूची या टुपल में सभी तत्वों का प्रकार समान और एक निश्चित प्रकार का है?टेस्ट प्रकार के तत्व पायथन ट्यूपल/सूची
उदाहरण के लिए:
(1, 2, 3) # test for all int = True
(1, 3, 'a') # test for all int = False
all(isinstance(n, int) for n in lst)
डेमो:
In [3]: lst = (1,2,3)
In [4]: all(isinstance(n, int) for n in lst)
Out[4]: True
In [5]: lst = (1,2,'3')
In [6]: all(isinstance(n, int) for n in lst)
Out[6]: False
isinstance(n, int)
के बजाय
आप भी type(n) is int
all(isinstance(i, int) for i in your_list))
इस्तेमाल कर सकते हैं आप क्या कर रहे हो सकता है पर निर्भर करता है यह duck typing का उपयोग करने के लिए अधिक पाइथोनिक बनें। इस तरह, चीजें जो इंट-जैसी (फ्लोट्स इत्यादि) हैं, साथ ही इनट्स भी पारित की जा सकती हैं। इस मामले में, आप एक int
को टपल में प्रत्येक आइटम परिवर्तित करने की कोशिश कर सकते हैं, और फिर किसी भी अपवाद पैदा पकड़ने:
>>> def convert_tuple(t, default=(0, 1, 2)):
... try:
... return tuple(int(x) for x in t)
... except ValueError, TypeError:
... return default
...
तो फिर तुम यह इतना की तरह उपयोग कर सकते हैं:
>>> convert_tuple((1.1, 2.2, 3.3))
(1, 2, 3)
>>> convert_tuple((1.1, 2.2, 'f'))
(0, 1, 2)
>>> convert_tuple((1.1, 2.2, 'f'), default=(8, 9, 10))
(8, 9, 10)
ओपी होना चाहिए चेतावनी दी है कि इससे पाइथन 2 में अप्रत्याशित व्यवहार हो सकता है, क्योंकि इंस्टेंसेंस (10 ** 100, int) == गलत है। आपको इंस्टेंसेंस करना होगा (एन, (int, long))। लेकिन पायथन में, किसी चीज़ के प्रकार की जांच करने की आवश्यकता अक्सर एक डिजाइन गलती का संकेत है जिसके साथ शुरू होता है। – DSM
इसके अलावा, पुरानी शैली के वर्गों के लिए 'टाइप() 'रिटर्न' <टाइप 'इंस्टेंस'>'। – Gandaro