@ জামিলাক এবং @ জেপ্যাডিসন 3 এর উত্তরগুলি একত্রিত করে, যদি আপনাকে ইনপুট হিসাবে নপি অ্যারেগুলির বিরুদ্ধে শক্ত হয়ে ও তালিকা হিসাবে একইভাবে পরিচালনা করতে হয়, আপনার ব্যবহার করা উচিত
import numpy as np
isinstance(P, (list, tuple, np.ndarray))
এটি তালিকা, টিপল এবং আকাঙ্ক্ষিত অ্যারেগুলির সাবক্লাসগুলির বিরুদ্ধে শক্ত।
এবং আপনি যদি সিকোয়েন্সের অন্যান্য সমস্ত সাবক্লাসের বিরুদ্ধেও দৃ be় হতে চান তবে (কেবল তালিকা এবং টিপল নয়)
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
?