Criar uma lista a partir de elementos de outra lista a transforma em NenhumTipo
Estou tentando criar uma lista de palavras usando palavras de uma lista separada de palavras. Por exemplo:
>>> stuff = ['this', 'is', 'a', 'test']
>>> newlist = [stuff[0]]
>>> newlist
['this']
No entanto, estou com um problema no meu código, quando tento fazer isso, e ele transforma a nova lista em um objeto NoneType.
Este é o código que está lançando um erro:
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
A variável 'stuff' é uma lista de palavras de sequência extraídas da entrada do usuário. 'words_d' é um dicionário criado anteriormente, que não é importante no momento:
stuff = input("Input a series of sentences: ")
stuff = stuff.split()[:-1] #this is here because there was an empty string at the end
Quando tento executar o programa, recebo o seguinte:
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()
Alguém pode me explicar por que a lista está sendo transformada em NoneType? Eu tentei uma variedade de métodos para tentar corrigir isso, mas simplesmente não consigo descobrir.
EDITAR:
Eu tentei isso e obtive o mesmo erro:
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()
Examinei outras perguntas e elas não explicam por que isso está acontecendo no meu código. Eu entendo que .append () retorna None. Não é isso que está acontecendo aqui.