有没有办法在python中设置整数范围内的列表值

时间:2017-11-28 19:15:49

标签: python python-3.x

我想执行以下操作:

>>> [0-2, 4]  #case 1
[-2, 4]     #I want the output to be [0, 1, 2, 4]

我知道我可以这样做:

>>> list(range(3)) + [4]   #case 2
[0, 1, 2, 4]

但我很好奇有没有办法使用case 1方法(或类似的东西)获得相同的结果?我是否需要覆盖整数' - '运营商或我是否需要对清单做任何事情?

2 个答案:

答案 0 :(得分:8)

>>> [*range(0,3), 4]
[0, 1, 2, 4]

应该最接近。仅限Python 3。

答案 1 :(得分:1)

@timgeb的答案很棒,但这会返回list,默认范围会返回"an immutable sequence type",因此使用itertools.chain会得到iterable }与range()更密切相关。

import itertools
itertools.chain(range(3), range(4,5))

(一旦转换为list list()所以我们可以看到内容)会给出:

[0, 1, 2, 4]

或者您可以制作自己的generator

def joinRanges(r1, r2):
    for i in r1:
        yield i
    for i in r2:
        yield i

通过以下方式实现与以前相同的效果:

joinRanges(range(3), range(4,5))