Machen einer Liste aus Elementen einer anderen Liste macht es zu einem NoneType
Ich versuche, eine Liste von Wörtern mit Wörtern aus einer separaten Liste von Wörtern zu erstellen. Beispielsweise
>>> stuff = ['this', 'is', 'a', 'test']
>>> newlist = [stuff[0]]
>>> newlist
['this']
Es tritt jedoch ein Problem in meinem Code auf, bei dem ich dies versuche, und die neue Liste wird in ein NoneType-Objekt umgewandelt.
Dies ist der Code, der einen Fehler auslöst:
markov_sentence = [stuff[0]]
for i in range(100):
if len(markov_sentence) > 0:
if words_d[markov_sentence[-1]] != []:
newword = random.choice(words_d[markov_sentence[-1]])
markov_sentence = markov_sentence.append(newword)
else:
break
return markov_sentence
Die Variable 'stuff' ist eine Liste von Zeichenkettenwörtern, die aus Benutzereingaben stammen. 'words_d' ist ein früher erstelltes Wörterbuch, das momentan nicht wichtig ist:
stuff = input("Input a series of sentences: ")
stuff = stuff.split()[:-1] #this is here because there was an empty string at the end
Wenn ich versuche, das Programm auszuführen, erhalte ich Folgendes:
Input a series of sentences: this is a test this should work
Traceback (most recent call last):
File "/u/sbiederm/markov.py", line 32, in <module>
main()
File "/u/sbiederm/markov.py", line 29, in main
print(markov(stuff))
File "/u/sbiederm/markov.py", line 18, in markov
if len(markov_sentence) > 0:
TypeError: object of type 'NoneType' has no len()
Kann mir jemand erklären, warum aus der Liste ein NoneType wird? Ich habe eine Vielzahl von Methoden ausprobiert, um dies zu beheben, aber ich kann es einfach nicht herausfinden.
BEARBEITEN
Ich habe dies versucht und den gleichen Fehler erhalten:
markov_sentence = []
markov_sentence.append(stuff[0])
Traceback (most recent call last):
File "C:\Python34\markov.py", line 33, in <module>
main()
File "C:\Python34\markov.py", line 30, in main
print(markov(stuff.split()))
File "C:\Python34\markov.py", line 20, in markov
if len(markov_sentence) > 0:
TypeError: object of type 'NoneType' has no len()
Ich habe mir andere Fragen angesehen und sie erklären nicht, warum dies in meinem Code geschieht. Ich verstehe, dass .append () None zurückgibt. Das ist hier nicht der Fall.