如何在一个范围内添加非连续数字?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在一个范围内添加非连续数字?相关的知识,希望对你有一定的参考价值。

我试图遍历范围(750,765)并添加非连续数字769,770,774。如果我尝试在范围函数之后添加数字,它将返回范围列表,然后是单个数字:


>>> for x in range(750, 765), 769, 770, 774: print x
... 
[750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764]
769
770
774

如何将所有数字都放在一个列表中?

答案

使用内置+运算符将非序列号附加到范围。

for x in range(750, 765) + [769, 770, 774]: print x
另一答案

有两种方法可以做到这一点。

>>> for x in range(5, 7) + [8, 9]: print x
...
5
6
8
9
>>> import itertools
>>> for x in itertools.chain(xrange(5, 7), [8, 9]): print x
...
5
6
8
9

itertools.chain()是最优秀的,因为它允许您使用任意迭代,而不仅仅是列表和列表。它也更高效,不需要列表复制。它允许你使用xrange,循环时你应该使用它。

另一答案

此页面上的其他答案将为您提供良好的服务。简单地说,在Python3.0中,range是一个迭代器(就像x2x在Python2.x中一样...... xrange在3.0中消失了)。如果您尝试在Python 3.0中执行此操作,请确保在执行添加之前从范围迭代器创建列表:

for x in list(range(750, 765)) + [769, 770, 774]: print(x)
另一答案

你在找这个:

mylist = range(750, 765)
mylist.extend([769, 770, 774])
另一答案

在python3中,由于无法将列表添加到范围,如果由于某种原因,您不希望导入itertool,您也可以手动执行相同的操作:

for r in range(750, 765), [769, 770, 774]:
    for i in r: 
        print(i)

要么

for i in [i for r in [range(750, 765), [769, 770, 774]] for i in r]: 
    print(i)

以上是关于如何在一个范围内添加非连续数字?的主要内容,如果未能解决你的问题,请参考以下文章

C语言 判断一个数字是不是在一个指定的区间范围内?求解答。。。。

检查用户是不是在半径范围内

尺取法

如何通过 PL-Sql 获取数字范围内的数字。?

从数组中识别和收集连续范围[重复]

如何在给定范围内创建一个随机打乱数字的 int 数组 [重复]