2013-02-22 13 views
23

Projekt wyrażenie logiczne równoważne następującym stwierdzeniem:Sprawdź, czy obiekt jest liczba lub wartość logiczna

x jest lista z trzech lub pięciu elementów, drugim elementem jest ciąg 'Hip' i pierwszy z których nie jest liczbą lub wartością logiczną.

Co mam:

x = ['Head', 'Hip', 10] 
print x[1] is 'Hip' 

Moje pytanie: Jak można sprawdzić, czy nie za to logiczna lub numer?

Odpowiedz

30

Aby odpowiedzieć na konkretne pytanie:

isinstance(x[0], (int, float)) 

Sprawdza czy x[0] jest wystąpienie któregokolwiek z typów w krotce (int, float).

Można tam również dodać bool, ale nie jest to konieczne, ponieważ bool sam jest podklasą int.

odniesienia Doc:


Aby wypowiedzieć się na temat aktualnego kodu, nie należy polegać na interning of short strings. Ci mają do porównywania ciągów znaków z operatorem ==:

x[1] == 'Hip' 
5
import types 
type(x) == types.BooleanType 
+0

'types.BooleanType' został usunięty z Pythona 3. Zamiast niego użyto' bool'. Źródło: http://www.diveintopython3.net/porting-code-to-python-3-with-2to3.html#types – KSR

16

Najprostsza powiedziałbym:

type(x) == type(True) 
+0

Trochę hacky, ale bez importu, więc +1 –

+9

Może bezpośrednio 'type (x) is bool'? – lerner

3

W python3 byłoby to: type(x)==bool zobaczyć example.

+0

Mój działa w obu. Logika jest w większości również niezależna od języka. – CurlyMo

Powiązane problemy