使用多个范围语句的 Python 列表初始化

标签 python list initialization range

我想要一个长列表,例如 [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 中,它返回一个可迭代对象(因此需要将其显式转换为列表)。对于将列表附加在一起,您可以使用 + 运算符。

关于使用多个范围语句的 Python 列表初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13959510/

相关文章:

python - 在 matplotlib 中为图例中的标签部分设置样式

python - 如何构建解析器

list - 如何在 Scala 中将列表元组展平为列表列表

c++ - 如何使用 new 在 C++ 中创建数组并初始化每个元素?

c++ - 无法使用指向其他结构的嵌套指针初始化结构

java - 在 Java 开关中声明和初始化变量

python - 将二进制转换为 ASCII,以及将 ASCII 转换为二进制

python - 随机森林准确率太低

php - 来自 mysql 的 JsTree ul li

python - 如何根据索引从 Python 列表中同时删除多个值?