Skip to content

bool (True, False) und andere Typen in Python ineinander umwandeln

Python

In Python werden Wahrheitswerte (boolesche Werte) durch boolsche Objekte, True und False, dargestellt. Ergebnisse von Vergleichsoperatoren werden als True oder False ausgegeben und in bedingten Ausdrücken in if-Anweisungen usw. verwendet.

Dieser Artikel sterben folgende Inhalte:

  • bool ist eine Unterklasse von int
    • True und False entsprechen 1 und 0
  • Wahrheitswertprüfung in Python
  • Konvertieren Sie andere Typen in bool:bool()
    • Konvertieren Sie eine bestimmte Zeichenfolge in 1, 0:distutils.util.strtobool()
  • Konvertieren Sie bool in andere Typen
    • Bool in Zahl umwandeln:int(), float(), complex()
    • bool in String umwandeln:str()
    • Andere Arten

bool ist eine Unterklasse von int

True und False sind Objekte vom Typ bool.

print(type(True))
# <class 'bool'>

print(type(False))
# <class 'bool'>

Mit der integrierten Funktion issubclass() können Sie bestätigen, dass bool eine Unterklasse des Integer-Typs int ist.

print(issubclass(bool, int))
# True

True und False entsprechen 1 und 0

True und False entsprechen 1 und 0.

print(True == 1)
# True

print(False == 0)
# True

Da bool eine Unterklasse von int ist, kann es wie ganze Zahlen berechnet werden.

print(True + True)
# 2

print(True * 10)
# 10

Daher can SIE die Anzahl von True in der Liste von True und False umfassen, demzufolge SIE sterben eingebaute Funktion sum() verwenden, sterben sterben Summe der in der Liste berechneten numerischen Zahlen.

print(sum([True, False, True]))
# 2

Der Generatorausdruck kann verwendet Werden, um die Anzahl der Elemente in Einer Liste zu umfassen, sterben sterben Bedingungen erfüllen. Verwenden Sie [] für Listenverständnisse und () für Generatorausdrücke.

Wenn der Generatorausdruck das einzige Argument der Funktion ist, kann () weggelassen Werden, sodass er wie folgt geschrieben werden kann.

l = [0, 1, 2, 3, 4]

print([i > 2 for i in l])
# [False, False, False, True, True]

print(sum(i > 2 for i in l))
# 2

Wahrheitswertprüfung in Python

In Python werden auch andere Objekte als True und False im bedingten Ausdruck der if-Anweisung als wahr oder falsch betrachtet.

Die following Objekte werden wie in der offiziellen offiziellen Dokumentation als falsch betrachtet.

  • Als falsch definierte Konstanten:None and False
  • Null eines beliebigen numerischen Typs:0, 0.0, 0j, Decimal(0), Fraction(0, 1)
  • Leere Sequenzen und Sammlungen:'', (), [], {}, set(), range(0)

Alle anderen Objekte werden als True betrachtet.

Beispiel WIRD Eine Nicht Leere Zeichenfolge Als True Betrachtet.

if 'abc':
    print('True!')
# True!

Sie can überprüfen, ob ein Objekt als True oder False angesehen WIRD, demzufolge Sie bool() verwenden, das unten erklärt WIRD.

Konvertieren Sie andere Typen in bool:bool()

Sie können Objekte anderer Typen mit bool() gemäß der oben beschriebenen Wahrheitswertprüfung in True oder False konvertieren.

Jeder nicht leere String str, egal ob ‚True‘ oder ‚False‘, wird als True betrachtet. Eine leere Zeichenfolge wird als falsch betrachtet. If SIE gemäß dem Inhalt der Zeichenfolge konvertieren möchten, verwenden SIE distutils.util.strtobool(), das unten erklärt WIRD.

print(bool('True'))
print(bool('False'))
print(bool('abc'))
# True
# True
# True

print(bool(''))
# False

Jede Zahl, die nicht 0 ist, unabhängig davon, ob es sich um eine ganze Zahl, eine Fließkommazahl oder eine komplexe Zahl handelt, wird als wahr betrachtet. Wenn es 0 ist, wird es als falsch angesehen.

print(bool(1))
print(bool(2))
print(bool(1.23))
print(bool(-1))
# True
# True
# True
# True

print(bool(0))
print(bool(0.0))
print(bool(0j))
# False
# False
# False

Alle nicht leeren Sequenzen und Sammlungen, ob Listen, Tupel, Mengen oder Wörterbücher, werden als wahr betrachtet. Leere Sequenzen und Sammlungen werden als falsch betrachtet.

print(bool([1, 2, 3]))
print(bool((1, 2, 3)))
print(bool({1, 2, 3}))
print(bool({'k1': 1, 'k2':2, 'k3': 3}))
# True
# True
# True
# True

print(bool([]))
print(bool(()))
print(bool({}))
# False
# False
# False

Keine wird als falsch angesehen.

print(bool(None))
# False

Konvertieren Sie eine bestimmte Zeichenfolge in 1, 0:distutils.util.strtobool()

Wie oben erwähnt, wandelt bool() den String „False“ in True um.

Mit distutils.util.strtobool() can SIE einen String entsprechend seines Inhalts umwandeln.

Wandeln Sie eine Buchstabendarstellung der Wahrheit in wahr (1) oder falsch (0) um. Wahre Werte sind y, yes, t, true, on und 1; falsche Werte sind n, no, f, false, off und 0. Löst ValueError aus, wenn val etwas anderes ist.
9. API-Referenz – distutils.util.strtobool() – Dokumentation zu Python 3.9.1

Sie müssen distutils.util importieren. Es ist in der Standardbibliothek enthalten, sodass keine zusätzliche Installation erforderlich ist.

distutils.util.strtobool() gibt 1 für die Strings ‚y‘, ‚yes‘, ‚true‘, ‚on‘, ‚1‘ und 0 für ’n‘, ’no‘, ‚f‘, ‚false‘ zurück ‚, ‚aus‘, ‚0‘.

Es spielt keine Rolle, ob es sich um Groß- oder Kleinbuchstaben handelt, Sie können auch ‚TRUE‘, ‚True‘, ‚YES‘ usw. verwenden.

from distutils.util import strtobool

print(strtobool('true'))
print(strtobool('True'))
print(strtobool('TRUE'))
# 1
# 1
# 1

print(strtobool('t'))
print(strtobool('yes'))
print(strtobool('y'))
print(strtobool('on'))
print(strtobool('1'))
# 1
# 1
# 1
# 1
# 1

print(strtobool('false'))
print(strtobool('False'))
print(strtobool('FALSE'))
# 0
# 0
# 0

print(strtobool('f'))
print(strtobool('no'))
print(strtobool('n'))
print(strtobool('off'))
print(strtobool('0'))
# 0
# 0
# 0
# 0
# 0

Löst ValueError für andere Werte aus.

# print(strtobool('abc'))
# ValueError: invalid truth value 'abc'

Wenn SIE andere Eingaben als die angegebenen Buchstaben akzeptieren möchten, müssen Sie Ausnahmen behandeln.

try:
    strtobool('abc')
except ValueError as e:
    print('other value')
# other value

Der Name ist strtobool(), aber der Rückgabewert ist int (1 oder 0) statt bool (True oder False).

print(type(strtobool('true')))
# <class 'int'>

In bedingten Ausdrücken wie if-Anweisungen werden 1 und 0 als wahr und falsch betrachtet, sodass es kein Problem gibt, sie so zu verwenden, wie sie sind.

if strtobool('yes'):
    print('True!')
# True!

Konvertieren Sie bool in andere Typen

Bool in Zahl umwandeln:int(), float(), complex()

Da True und False, wie oben erwähnt, 1 und 0 entsprechen, können sie mit int(), float() und complex() in 1 und 0 der jeweiligen Typen umgewandelt werden.

print(int(True))
print(int(False))
# 1
# 0

print(float(True))
print(float(False))
# 1.0
# 0.0

print(complex(True))
print(complex(False))
# (1+0j)
# 0j

bool in String umwandeln:str()

Sie können True und False mit str() in Strings ‚True‘ und ‚False‘ umwandeln.

print(str(True))
print(str(False))
# True
# False

print(type(str(True)))
print(type(str(False)))
# <class 'str'>
# <class 'str'>

Nicht leere Strings werden als True betrachtet. Wenn Sie also False mit str() in Strings umwandeln und dann mit bool() wieder in den Typ bool umwandeln, ist es True.

print(bool(str(False)))
# True

Andere Arten

list() und tuple() can boolsche Typen nicht in Listen und Tupel konvertieren. Sie wird nicht in eine leere Liste umgewandelt.

# print(list(True))
# TypeError: 'bool' object is not iterable