@Jamylak ve @ jpaddison3'ün cevaplarını bir araya getirerek, giriş olarak sayısal dizilere karşı sağlam olmanız ve bunları listelerle aynı şekilde işlemeniz gerekiyorsa, kullanmalısınız.
import numpy as np
isinstance(P, (list, tuple, np.ndarray))
Bu liste, tuple ve numpy dizilerinin alt sınıflarına karşı dayanıklıdır.
Ve sıralamanın diğer tüm alt sınıflarına karşı da sağlam olmak istiyorsanız (sadece liste ve grup değil),
import collections
import numpy as np
isinstance(P, (collections.Sequence, np.ndarray))
Neden bir şeyleri bir hedef değerle isinstance
karşılaştırıp değil, bu şekilde yapmalısınız type(P)
? İşte NewList
önemsiz bir liste alt sınıfını yaptığımız ve çalıştığımız bir örnek .
>>> 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
Buna rağmen x
ve y
eşit olarak karşılaştırmak, onları ele almak type
farklı davranışlarla sonuçlanır. Bununla birlikte, bir x
alt sınıfının bir örneğidir list
kullanılarak, isinstance(x,list)
istenilen davranışı ve muamele verir x
ve y
aynı şekilde.
type
mi?