Python not supported between instances of 'str' and 'int'?

1 Antwort

Education[c] ist ein String, 0 ist eine Zahl.

Das kann so nicht gehen, du hast wohl den falschen Datentyp in "Edcuation" und was du da für Zeug machst mit dem neuen Wert assignen will ich glaube ich gar nicht wissen.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops
Renzius 
Fragesteller
 06.07.2021, 23:55

Wie lautet denn dann der Befehl um nur Zahlen größer 0 anzeigen zu lassen?

0
BeamerBen  07.07.2021, 00:16
@Renzius

Bin kein Python pro, aber es gibt filter(), das dürfte der einfachste weg sein Listen so zu filtern wie du scheinbar willst.

numbers = [-1, 0, 1, 2]
numbers_gt_zero = filter(lambda e: e > 0, test)
print(list(numbers_gt_zero))

Lambda ist mehr oder weniger einfach eine Funktion die man filter übergibt, man könnte auch eine normale Funktion nutzen (ist halt umständlicher und länger, aber eventuell einfach zu verstehen)

numbers = [-1, 0, 1, 2]
def test_gt_zero(e):
    return e > 0
numbers_gt_zero = filter(test_gt_zero, numbers)
print(list(numbers_gt_zero))

Und wenn du lieber eine normale for loop möchtest (weils vielleicht einfach zu verstehen ist mit deinem Wissen) dann könnte man das so machen.

numbers = [-1, 0, 1, 2]
numbers_gt_zero = []
for e in numbers:
    if e > 0: numbers_gt_zero.append(e)
    
print(numbers_gt_zero)

Es ist in der Regel besser einfach eine neue Liste zu machen weil eine Liste zu mutieren während man über die einzelnen Elemente loopt in der Regel keine gute Idee ist.

Aber dein Grundproblem ist laut der Fehlermeldung die du bekommst, dass du keinen String mit größer als vergleichen kannst, z.B. "1" > 0 geht einfach nicht. Aber wenn du Zahlen in einem String hast kannst du die mit int(variable) zu einem Integer umwandeln, also z.B. int("1") > 0 geht wieder.

1
Renzius 
Fragesteller
 07.07.2021, 00:21
@BeamerBen

Super ich danke dir hat funktioniert!!

1
MrAmazing2  07.07.2021, 01:13
@BeamerBen

Ich würde mal sagen

numbers_gt_zero = [i for i in numbers if i > 0]

wäre der pythonic way.

1
BeamerBen  07.07.2021, 01:30
@MrAmazing2

Yep das stimmt, das Feature hatte ich vergessen.

Hab noch mal etwas doku gelesen und das ist eindeutig der bessere Weg in Python, für filter spricht höchstens das es lesbarer für Leute ist die aus anderen Sprachen kommen (wie mich die Python nur nutzen um Kleinigkeiten zu automatisieren oder so), aber das dürfte nicht relevant sein.

Schneller sind list crompehensions, also dein Weg, scheinbar auch, gut zu wissen.

1