Warum nicht “return Liste.sort()" return Keine, nicht in der Liste?
Habe ich in der Lage, um zu überprüfen, dass die findUniqueWords
führt im Ergebnis sortiert list
. Es wird jedoch nicht return
die list
, warum?
def findUniqueWords(theList):
newList = []
words = []
# Read a line at a time
for item in theList:
# Remove any punctuation from the line
cleaned = cleanUp(item)
# Split the line into separate words
words = cleaned.split()
# Evaluate each word
for word in words:
# Count each unique word
if word not in newList:
newList.append(word)
answer = newList.sort()
return answer
Ich glaube nicht, dass Sie brauchen, um den Artikel in eine Zeichenfolge so oft. Einmal ist in der Regel genug und es ist sauberer, es zu tun auf der input-Bereinigung sowie.
Nur ein dummer Gedanke, aber wenn Sie wollen eine Liste der unique items, warum Sie nicht einfach umwandeln in ein set? Sie können dann konvertieren Sie Sie zurück zu einer Liste, wenn Sie brauchen.
Zugabe zu dem, was @runlevel0 sagte (das ist eine gute Idee): Sie können zu konvertieren eine
Nur ein dummer Gedanke, aber wenn Sie wollen eine Liste der unique items, warum Sie nicht einfach umwandeln in ein set? Sie können dann konvertieren Sie Sie zurück zu einer Liste, wenn Sie brauchen.
theSet= set(theList)
Und Sie sind fertig, Sie müssen nur zu werfen es zurück zur Liste: theList = list(theSet)
Getan. Einfach.Zugabe zu dem, was @runlevel0 sagte (das ist eine gute Idee): Sie können zu konvertieren eine
theSet' into a sorted list with
sortiert(theSet)`.InformationsquelleAutor Lee_Str | 2011-09-04
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
list.sort
sortiert die Liste in place, d.h. es wird nicht wieder eine neue Liste. Schreiben Sie einfachreturn sorted(newList)
kürzer ist. Spielt keine Rolle hier, da die variable lokal ist, aber in-place Sortieren könnte sich ändern, eine shared-variable in einigen Fällen.Es ist interessant, dass, wenn ein Eintrag in einer Liste, entweder
a.append('x')
odera.extend('x)
Sie können nicht chainsort()
am Ende entweder. Es muss aufgeteilt werden in 2 Zeilen. Es wäre schöner gewesen, hatte die Methoden zurückgegeben, die Liste! docs.python.org/3/tutorial/datastructures.html Diese gleiche Meldung, die mich etwas durch genau das zu tun. Deshalb Sie haben zu brechen, die die Sache in zwei Zeilen, Sie haben zu verwenden.sort()
NICHTsorted()
auf der Liste hinterher, da dieser erzeugt den gleichen Fehlerl = ['1']; l = sorted(l.append('2'))
(ich habe gerade ein Semikolon, so könnte man Ausschneiden/einfügen und ausführen)Ich würde auch hinzufügen, kann es sich lohnen, schau mal hier: grantjenks.com/docs/sortedcontainers , github.com/grantjenks/python-sortedcontainers In meiner, dachte schon, die Umgestaltung aus einer Liste zu einem Satz, da wollte ich nicht Duplikate, und war dann auf der Suche für ein SortedSet Umsetzung, und nicht fündig wurde man in Sammlungen-Modul... Quelle:
Warum war
sort
Funktion auf diese Weise entwickelt? gibt es irgendwelche performance-overhead oder sonstige Nachteile, wenn die Rückkehr der sortierten Liste statt Keiner?Auch ich Stand vor dem folgenden problem :
print(newList.sort())
gabNone
. Aber als ich das Tat,newList.sort()
und dannprint(newList)
es funktionierte.InformationsquelleAutor Ismail Badawi
Das problem ist hier:
sort
nicht zurück, die sortierte Liste, sondern sortiert die Liste in place.Verwenden:
list.sort()
undsorted(list)
.InformationsquelleAutor NPE
Hier ist eine E-Mail von Guido van Rossum python - dev-Liste explainig, warum er nicht zu wählen zurück
self
auf Operationen, die sich auf das Objekt und nicht wieder eine neue.split(":").lower()
ist eine schlechte Kette, dasplit
gibt eine Liste, der nicht über einelower
Methode.InformationsquelleAutor Gonzalo Larralde
Python hat zwei Arten von Arten: eine Art Methode (oder "member-Funktion") und eine Art Funktion. Die sort-Methode arbeitet auf den Inhalt des Objekts mit dem Namen-denken Sie daran, wie eine Aktion, die das Objekt der Einnahme von neu -, um sich. Die Sortierfunktion ist eine Betrieb über die Daten, die durch ein Objekt dargestellt und gibt ein neues Objekt mit gleichem Inhalt in sortierter Reihenfolge.
Gegeben eine Liste von Ganzzahlen, die mit Namen
l
die Liste selbst wird nachbestellt, wenn wir rufenl.sort()
:Diese Methode hat keinen Rückgabewert. Aber was ist, wenn wir versuchen, weisen Sie das Ergebnis der
l.sort()
?r
entspricht jetzt eigentlich nichts. Dies ist einer jener seltsamen, etwas störende details, die ein Programmierer ist wahrscheinlich zu vergessen, nach einer Zeit der Abwesenheit von Python (das ist der Grund, warum ich dies Schreibe, so ich nicht wieder vergessen werden).Die Funktion
sorted()
, auf der anderen Seite, wird nicht alles tun, um den Inhaltl
, aber geben eine neue, sortierte Liste mit den gleichen Inhalten wiel
:Sich bewusst sein, dass der zurückgegebene Wert ist nicht eine Tiefe Kopie, so vorsichtig sein, über side-effecty Operationen über die Elemente in der Liste wie gewohnt:
InformationsquelleAutor zxq9
Python gewöhnlichen zurück
None
von Funktionen und Methoden, mutieren Sie die Daten, wielist.sort
,list.append
, undrandom.shuffle
mit der Idee, dass es Hinweise auf die Tatsache, dass es mutieren.Wenn Sie wollen, um einen wiederholenden und zurück eine neue, sortierte Liste der Objekte, verwenden Sie die
sorted
builtin-Funktion.InformationsquelleAutor Mike Graham
Verstehen, warum es nicht wieder die Liste:
sort() nicht zurückgegeben Wert während.
Methode sort() einfach Sortieren der Elemente einer gegebenen Liste in einer bestimmten Reihenfolge - Aufsteigend oder Absteigend, ohne jeden Wert.
Also problem ist mit
answer = newList.sort()
wo die Antwort ist keine.stattdessen können Sie nur
return newList.sort()
Die syntax der sort () - Methode:
Alternativ können Sie auch verwenden Python eingebaute Funktion sorted() für den gleichen Zweck.
Hinweis: der Einfachste Unterschied zwischen der sort() und sorted (): sort() nicht zurückgegeben Wert während, sortiert() gibt einen wiederholenden Liste.
Also in deinem Fall
answer = sorted(newList)
InformationsquelleAutor Projesh Bhoumik