Создание списка из элементов другого списка превращает его в NoneType
Я пытаюсь создать список слов, используя слова из отдельного списка слов. Например:
>>> stuff = ['this', 'is', 'a', 'test']
>>> newlist = [stuff[0]]
>>> newlist
['this']
Тем не менее, я столкнулся с проблемой в моем коде, где я пытаюсь это сделать, и он превращает новый список в объект NoneType.
Это код, который выдает ошибку:
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
Переменная 'stuff' представляет собой список строковых слов, взятых из пользовательского ввода. 'words_d' - это словарь, созданный ранее, который сейчас не важен:
stuff = input("Input a series of sentences: ")
stuff = stuff.split()[:-1] #this is here because there was an empty string at the end
Когда я пытаюсь запустить программу, я получаю это:
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()
Может кто-нибудь объяснить мне, почему список превращается в NoneType? Я пробовал различные методы, чтобы попытаться это исправить, но я просто не могу понять это.
РЕДАКТИРОВАТЬ:
Я попробовал это и получил ту же ошибку:
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()
Я посмотрел на другие вопросы, и они не объясняют, почему это происходит в моем коде. Я понимаю, что .append () возвращает None. Это не то, что здесь происходит.