尝试扩展 Python 中的列表时出现类型错误

Type error when trying to extend a list in Python

我需要了解原因:

years = range(2010,2016)
years.append(0)

是可能的,返回:

[2010,2011,2012,2013,2014,2015,0]

years = range(2010,2016).append(0)

years = [0].extend(range(2010,2016))

不起作用?

我从收到的消息中了解到这是一个类型错误。但我想在这背后有更多的解释。

您正在存储 list.append()list.extend() 方法的结果; in place 和 return None 都改变了列表。他们再次return列表对象。

不存储None结果;存储 range() 结果, 然后 扩展或追加。或者,使用连接:

years = range(2010, 2016) + [0]
years = [0] + range(2010, 2016)

请注意,我假设您使用的是 Python 2(否则您的第一个示例将无法运行)。 In Python 3 range() 不生成列表;您必须使用 list() 函数将其转换为一个:

years = list(range(2010, 2016)) + [0]
years = [0] + list(range(2010, 2016))

appendextend 对列表的操作不会 return 任何东西(return 只是 None)。这就是为什么 years 不是您期望的列表。

在 Python 3 range return 中是范围 class 的实例,而不是列表。如果你想操作 range 的结果,你需要一个列表,所以:

years = list(range(2010,2016)) 
years.append(2016)

最后,(与上面的附加类似)extend 在您调用它的列表上运行,而不是 returning 新列表,因此:

years = list(range(2010,2016))
years.extend( list(range(2016,2020)))

*虽然 Python 2 的 range 函数 return 一个列表,上面代码在 Python 2*

中仍然可以正常工作

希望对您有所帮助!