@Jamylak और @ jpaddison3 के उत्तरों को एक साथ मिलाकर, यदि आपको इनपुट के रूप में संख्यात्मक सरणियों के खिलाफ मजबूत होना है और उन्हें सूचियों की तरह से संभालना है, तो आपको उपयोग करना चाहिए
import numpy as np
isinstance(P, (list, tuple, np.ndarray))
यह सूची, टपल और सुन्न सरणियों के उपवर्गों के खिलाफ मजबूत है।
और यदि आप अनुक्रम के अन्य सभी उपवर्गों के खिलाफ मजबूत होना चाहते हैं (न कि केवल सूची और तुच्छ), का उपयोग करें
import collections
import numpy as np
isinstance(P, (collections.Sequence, np.ndarray))
आपको इस तरह से चीजों को क्यों करना चाहिए isinstanceऔर type(P)लक्ष्य मूल्य के साथ तुलना नहीं करनी चाहिए ? यहां एक उदाहरण है, जहां हम NewListसूची के एक तुच्छ उपवर्ग का व्यवहार बनाते हैं और उसका अध्ययन करते हैं ।
>>> class NewList(list):
... isThisAList = '???'
...
>>> x = NewList([0,1])
>>> y = list([0,1])
>>> print x
[0, 1]
>>> print y
[0, 1]
>>> x==y
True
>>> type(x)
<class '__main__.NewList'>
>>> type(x) is list
False
>>> type(y) is list
True
>>> type(x).__name__
'NewList'
>>> isinstance(x, list)
True
बराबर होने xऔर yतुलना करने के बावजूद , उन्हें संभालने typeसे अलग व्यवहार होगा। हालाँकि, चूंकि xएक उपवर्ग का एक उदाहरण है list, का उपयोग isinstance(x,list)करना वांछित व्यवहार और व्यवहार xऔर yउसी तरीके से देता है।
type?