我想执行以下操作:
>>> [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方法(或类似的东西)获得相同的结果?我是否需要覆盖整数' - '运营商或我是否需要对清单做任何事情?
答案 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))