串联两个列表时如何解决类型错误

时间:2019-04-09 02:56:11

标签: python python-3.x

嗨,我是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)

2 个答案:

答案 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]