6 回答

TA貢獻1820條經驗 獲得超2個贊
您可以使用list.extend來完成此任務。
slice1?=?a[1:5] slice2?=?a[6:10] slice1.extend(slice2) #?now?use?slice1
它將 slice2 的所有項目附加到第一個 slice1。

TA貢獻1773條經驗 獲得超3個贊
如果您想避免為各個切片創建中間列表,您可以使用itertools.isliceandchain.from_iterable來獲取切片并將其組合為迭代器。
>>> from itertools import chain, islice
>>> slc = [(1,5), (6,10)]
>>> list(chain.from_iterable(islice(a, *s) for s in slc))
[1, 2, 3, 4, 6, 7, 8, 9]
也適用于 1 元組或 3 元組,僅用于結束或開始-結束步驟切片。

TA貢獻1785條經驗 獲得超8個贊
沒有特殊的語法,只需附加列表切片即可:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# [1, 2, 3, 4, 6, 7, 8, 9]
print(a[1:5]+a[6:10])

TA貢獻1779條經驗 獲得超6個贊
我認為以下可能是最有效的方法:
all_slice?=?[*a[1:5],?*a[6:10]]
哪里all_slice
持有:
[1,?2,?3,?4,?6,?7,?8,?9]
這看起來很Pythonic。

TA貢獻1829條經驗 獲得超9個贊
受到答案的啟發:
沒有特殊的語法,只需附加列表切片即可:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
打?。╝[1:5]+a[6:10])
FROM -> Aviv Yaniv
b、a = a[1:5]、a[6:10]
打?。╞+a)

TA貢獻1825條經驗 獲得超6個贊
如果您嘗試分割多個范圍,則可以使用帶有slice()
列表理解的內置函數:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ranges = [(1, 5), (6, 10)]? ?
[n for s in ranges for n in a[slice(*s)]]
# [1, 2, 3, 4, 6, 7, 8, 9]
添加回答
舉報