我需要了解原因:
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))
不起作用?
据我所知,这是一个类型错误。但是我想对此背后有更多的解释。
答案 0 :(得分:6)
您正在存储list.append()
或list.extend()
方法的结果;两者都改变列表到位并返回None
。他们不再次返回列表对象。
不要存储None
结果;存储range()
结果,然后扩展或追加。或者,使用串联:
years = range(2010, 2016) + [0]
years = [0] + range(2010, 2016)
请注意,我假设您使用的是Python 2(否则您的第一个示例将不起作用)。在Python 3中range()
不生成列表;您必须使用list()
函数将其转换为一个:
years = list(range(2010, 2016)) + [0]
years = [0] + list(range(2010, 2016))
答案 1 :(得分:1)
-j
和append
操作不返回任何内容(仅返回extend
)。这就是为什么None
不是您期望的列表。
答案 2 :(得分:0)
在Python 3中 range
返回范围类的实例,而不是列表。如果你想操纵range
的结果,你需要一个清单,所以:
years = list(range(2010,2016))
years.append(2016)
最后,(和上面的附录类似)扩展操作在您调用它的列表上,而不是返回新列表,所以:
years = list(range(2010,2016))
years.extend( list(range(2016,2020)))
*虽然Python 2的 range
函数确实返回一个列表,但上述代码在Python 2 *中仍能正常工作
希望这有帮助!