有没有办法在python中设置整数范围内的列表值
我要执行以下操作:有没有办法在python中设置整数范围内的列表值,python,python-3.x,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] 但我很好奇,有没有什么方法可以使用案例1方法(或类似的方法)获得相同的结果?我需要重写整数“-”运算符还是需要对列表执行任何操作 >>> [*range(0,3
>>> [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]
但我很好奇,有没有什么方法可以使用案例1方法(或类似的方法)获得相同的结果?我需要重写整数“-”运算符还是需要对列表执行任何操作
>>> [*range(0,3), 4]
[0, 1, 2, 4]
应该是最接近的。仅限Python 3。的答案很好,但这将返回一个列表,默认情况下,range返回一个“不可变序列类型”
,因此使用itertools.chain
将得到一个与range()
更密切相关的iterable
其中(使用list()
转换为列表
,以便我们可以查看内容)将给出:
[0, 1, 2, 4]
或者您也可以制作自己的生成器
:
def joinRanges(r1, r2):
for i in r1:
yield i
for i in r2:
yield i
当使用以下命令调用时,达到与以前相同的效果:
joinRanges(range(3), range(4,5))
现在你有了一个范围和静态值的列表。走@我拒绝。事实上,我们不能在列表理解中使用带星号的表达式,这使得这个例子很无聊。这正是我所需要的,因为我尝试了[range(0,3),4],它将函数作为索引0返回。谢谢
joinRanges(range(3), range(4,5))