Bir listedeki veya bir parçadaki tüm elemanların türünün aynı ve belirli türde olduğunu nasıl doğrularsınız? örneğinTest tipi elemanlar python tuple/liste
:
(1, 2, 3) # test for all int = True
(1, 3, 'a') # test for all int = False
Bir listedeki veya bir parçadaki tüm elemanların türünün aynı ve belirli türde olduğunu nasıl doğrularsınız? örneğinTest tipi elemanlar python tuple/liste
:
(1, 2, 3) # test for all int = True
(1, 3, 'a') # test for all int = False
all(isinstance(n, int) for n in lst)
Demo: Yerine isinstance(n, int)
ait
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
da ne yaptığınızı bağlı type(n) is int
all(isinstance(i, int) for i in your_list))
kullanabilirsiniz o olabilir duck typing kullanmak için daha fazla Pythonic olun. Bu şekilde, int-like (floatlar, vb.) Şeyler de ints gibi iletilebilir. Bu durumda, bir int
için demet içinde her öğeyi dönüştürmeyi deneyin ve ardından ortaya çıkan durumlar catch olabilir:
>>> def convert_tuple(t, default=(0, 1, 2)):
... try:
... return tuple(int(x) for x in t)
... except ValueError, TypeError:
... return default
...
Sonra şöyle kullanabilirsiniz:
>>> 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)
OP olmalıdır Python 2'de beklenmedik davranışlara yol açabileceği uyarısında bulundu, çünkü isinstance (10 ** 100, int) == False. Isinstance (n, (int, long)) yapmalısınız. Fakat Python'da, bir şeyin türünü kontrol etmeye ihtiyaç duymak, genellikle bir tasarım hatasının başlangıcıdır. – DSM
Ayrıca, 'type()' eski stil sınıfları için 'döndürür. –
Gandaro