使用多个范围语句的Python列表初始化
问题内容:
我想要一个长列表,例如[1,2,3,4,5,15,16,17,18,19]。要初始化它,我尝试输入:
new_list = [range(1,6),range(15,20)]
但这并不能满足我的要求,返回:
[[1, 2, 3, 4, 5], [15, 16, 17, 18, 19]]
当我做:
len(new_list)
它返回2,而不是我想要的10个元素(因为它在列表内创建了2个列表)。显然,在此示例中,我可以只键入我想要的内容,但是我正在尝试对一些奇怪的迭代列表执行此操作,例如:
new_list = [range(101,6284),8001,8003,8010,range(10000,12322)]
想要一维列表而不是列表列表(或任何最好的列表)。我猜这真的很容易,我想念它,但是经过大量的搜索,我发现没有什么用处。有任何想法吗?
问题答案:
对于Python 2.x,请尝试以下操作:
range(1,6) + range(15,20)
或者,如果您使用的是Python3.x,请尝试以下操作:
list(range(1,6)) + list(range(15,20))
为了处理介于两者之间的元素,对于Python 2.x:
range(101,6284) + [8001,8003,8010] + range(10000,12322)
最后,对于Python 3.x,处理它们之间的元素:
list(range(101,6284)) + [8001,8003,8010] + list(range(10000,12322))
这里要记住的关键方面是在Python 2.x中range
返回一个列表,而在Python
3.x中它返回一个可迭代的(因此需要将其显式转换为列表)。对于将列表附加在一起,可以使用+
运算符。