Ausgabe von Listen ohne [] per join Befehl

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Evoniq
User
Beiträge: 2
Registriert: Mittwoch 3. Januar 2024, 00:58

Hallo, ich bin ganz neu was Sachen programmieren angeht und lerne gerade die Grundlagen. Ich lerne gerade auf einer Webseite, wie man Listen erstellt, dies geht auch ganz gut.. Nur wurde dort leider nur gezeigt, wie man Listen ausgeben kann, wo es dann immer so aussah:

['Name1', 'Name2', 'Name3'] usw. dann hatte ich per Ki gefragt, wie mann eine Liste ausgeben lassen kann ohne die Klammern und ohne die '. Die Ki hat mir vorgeschlagen, ich solle den Befehl .join benutzen. Meine Frage dazu ist, ich soll den Befehl so schreiben

namensliste = ['Name1', 'Name2', 'Name3']
print( ',' .join(kartoffel))

soweit so gut, es funktioniert auch, die Namen werden ohne Zeichen außer dem , angezeigt. Meine Frage nun wäre, warum genau muss ich bei der Ausgabe vor dem .join Befehl, ein ' , ' angeben. Leider hat die Ki mir das nicht verraten und man lernt ja nur draus, wenn man den Grund dafür kennt.

Und eine weitere Frage hätte ich noch, ich habe in den Tutorials gelernt, wie man eine Variable aus einer Liste löschen kann, auch an bestimmten Stellen.. Nur wurde es einmal mit dem del Befehl gezeigt und einmal mit remove, ist es egal, welchen man von beiden benutzt oder macht es in verschiedenen Fällen mehr Sinn, del oder remove zu benutzen?

Mfg Evoniq. (Bitte nicht wundern, ich werde erst gegen späten abend wieder hier reinschauen, da die Arbeit morgen ruft.) :)
Benutzeravatar
__blackjack__
User
Beiträge: 13122
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Evoniq: Nimm doch mal was anderes als ein ", " und schau Dir an wie das Ergebnis aussieht. Und dann könntest Du noch in der Python-Dokumentation nachlesen was die `join()`-Methode auf Zeichenketten (`str`) macht. Da kommt man am schnellsten gezielt hin, wenn man über den Index geht. Der ist auf fast jeder Dokumentationsseite oben rechts per Link erreichbar. Dort dann „J“ anklicken und aus der Liste unter „join“ den Eintrag zur `str`-Methode anklicken. Auf diesem Weg kommt man schnell zur Dokumentation von allem was so in Python eingebaut und in der Standardbibliothek ist.

Das Tutorial in Python-Dokumentation sollte man IMHO übrigens auch irgendwann einmal durchgearbeitet haben.

Bei ``del`` vs. `remove()` ist es nur egal wenn es wirklich egal ist, was wohl eher selten der Fall ist, denn die sind ja nicht einfach austauschbar. Mit ``del`` kann man nicht löschen wenn man den Wert kennt, und mit `remove()` kann man nicht löschen wenn man nur die Position kennt. Letztlich verwendet man beides in der Praxis eher selten. ``del`` noch weniger als `remove()`, weil man auch mit Indexwerten selten zu tun hat wenn man in Python programmiert. Üblicherweise baut man eine neue Liste ohne die Werte die man nicht mehr haben möchte.

Edit: Der Style Guide for Python Code ist bei Gelegenheit einen Blick wert.

Grunddatentypen schreibt man eher nicht in Namen, weil man den Typ im Laufe einer Programmentwicklung ab und zu mal ändert, durch etwas Spezialisierteres, oder gar einen eigenen Datentyp, und dann hat man falsche, irreführende Namen im Quelltext, oder muss alle betroffenen Namen finden und anpassen. Bei Sequenztypen wie Listen nimmt man in der Regel einfach die Mehrzahl von dem was ein guter Name für ein einzelnes Element wäre, also statt `namensliste` beispielsweise `namen`. Und `kartoffel` ist kein guter Name solange der Wert dahinter nicht tatsächlich für eine 🥔 steht. 🙂
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
noisefloor
User
Beiträge: 3857
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Und eine weitere Frage hätte ich noch, ich habe in den Tutorials gelernt, wie man eine Variable aus einer Liste löschen kann, auch an bestimmten Stellen.. Nur wurde es einmal mit dem del Befehl gezeigt und einmal mit remove,
`remove` kann _nicht_ an einer bestimmten Stelle löschen. `list.remove('foo')` löscht das 1. 'foo' in der Liste, egal welchen Index es hat. Wenn du ein Element an einem bestimmten Index entfernen willst bietet sich `list.pop(index)` an.
wie mann eine Liste ausgeben lassen kann ohne die Klammern und ohne die '. Die Ki hat mir vorgeschlagen, ich solle den Befehl .join benutzen.
Strikt gesehen ist das falsch. Mit `join` gibst du keine Liste aus, sondern einen String. Das ist halt ein anderer Datentyp. Der String enthält dann die Elemente der Liste.
Da die `[]` halt Listen in Python kennzeichnen, bekommst du die immer mit, wenn du eine Liste ausgibst.

Gruß, noisefloor
Benutzeravatar
snafu
User
Beiträge: 6744
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wenn es wirklich nur um die Ausgabe geht, dann kann man auch print() benutzen:

Code: Alles auswählen

# Ausgabe mit Leerzeichen
print(*names)

# Kommagetrennte Ausgabe
print(*names, sep=", ")
Evoniq
User
Beiträge: 2
Registriert: Mittwoch 3. Januar 2024, 00:58

Vielen Dank für die Antworten, ich werde mir aufjedenfall mal den style guide anschauen und die Dokumentation. Bin halt wirklich ganz neu, was das programmieren angeht.

Bei den Befehlen "del" und "remove", dachte ich an eine Option z.B wenn ich eine Todoliste erstelle, dass ich damit quasi Punkte die nicht mehr aktuell sind oder sowas dann per "Eingabe" löschen kann. Aber ich schau mal, wie das Tutorial weiter geht, und was es noch alles für schöne Funktionen gibt :)
Antworten