[英]Is there a way to set a list value in a range of integer in python
我想執行以下操作:
>>> [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。
@timgeb
的答案很棒,但這會返回一個list
,默認情況下,range返回"an immutable sequence type"
,因此使用itertools.chain
會給出一個與range()
更密切相關的iterable
。
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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.