Привет, я новичок в Python, и я пишу простую программу. Когда я выполняю код с использованием python 3.7, он дает мне следующую ошибку:
Error: unsupported operand type(s) for +: 'NoneType' and 'list'
И sublist1, и sublist2 являются типами списка, но они не объединяются.
MyList = list(range(1,51))
sublist1 = MyList[-26:-29:-1]
sublist1 = sublist1.reverse()
sublist2 = MyList[25:27:1]
print(sublist1 + sublist2)
reverse()
переворачивает список на месте, поэтому вам просто нужно было перевернуть, а не назначать обратно:
sublist1.reverse()
Ошибка, которую вы получаете, ясно говорит о том, что вы пытаетесь объединить тип None
с типом list
.
sublist1 = sublist1.reverse()
Это присвоит None
sublist1
, поскольку обратная операция ничего не возвращает.
Код ниже работает. Смотрите объяснение после него, почему:
MyList = list(range(1,51))
sublist1 = MyList[-26:-29:-1]
sublist1.reverse()
sublist2 = MyList[25:27:1]
print(sublist1 + sublist2) ## [23, 24, 25, 26, 27]
Встроенный метод reverse()
переворачивает содержимое объекта списка на месте. Переворачивание списка на месте означает, что он не будет создавать новый список. Вместо этого он напрямую изменяет исходный объект списка. reverse()
возвращает None, но изменяет исходный объект списка. Ниже показано, почему это было преднамеренно сделано именно так:
The reverse() method modifies the sequence in place for economy of space when reversing a large sequence. To remind users that it operates by side effect, it does not return the reversed sequence. (Source: Python 3 Docs)
если вы должны назначить его чему-то, вам нужно сделать:sublist3 = list(reversed(sublist1))
илиsublist3 = sublist1[::-1]
Нет, вы назначаете
None
наsublist1
здесь:sublist1 = sublist1.reverse()