尝试扩展 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))
append
和 extend
对列表的操作不会 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*
中仍然可以正常工作
希望对您有所帮助!
我需要了解原因:
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))
append
和 extend
对列表的操作不会 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*
希望对您有所帮助!