嗨,我是Python的新手,我正在编写一个简单的程序。当我使用python 3.7执行代码时,出现以下错误:
错误:+不支持的操作数类型:“ NoneType”和“列表”
sublist1和sublist2均为列表类型,但仍未串联。
MyList = list(range(1,51))
sublist1 = MyList[-26:-29:-1]
sublist1 = sublist1.reverse()
sublist2 = MyList[25:27:1]
print(sublist1 + sublist2)
答案 0 :(得分:0)
reverse()
就地反转列表,因此您只需要反转而不分配回来:
sublist1.reverse()
您收到的错误清楚地表明您正在尝试将None
类型连接为list
类型。
sublist1 = sublist1.reverse()
这将为None
分配一个sublist1
,因为反向操作不会返回任何内容。
答案 1 :(得分:0)
以下代码有效。有关原因,请参见其后的说明:
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,但修改原始列表对象。请参阅下面的内容,以了解为什么这样做是故意的:
reverse()方法可修改顺序,以节省成本 大顺序反转时的空格。提醒用户 通过副作用进行操作,它不会返回相反的顺序。 (来源:Python 3 Docs)
如果必须将其分配给某物,则需要执行以下操作:
sublist3 = list(reversed(sublist1))
或
sublist3 = sublist1[::-1]