亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將列表切成多個切片

將列表切成多個切片

泛舟湖上清波郎朗 2023-07-18 16:28:21
我正在尋找將列表分成兩個或多個切片。例如,有一個列表:a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]假設我想將列表分為項目 1 到 4 和 6 到 9。如果我們這樣做:a[1:5]輸出:[1, 2, 3, 4]如果我們這樣做:a[6:10]輸出是:[6, 7, 8, 9]但有沒有辦法組合多個切片。就像是:a[1:5 and 6:10]輸出:[1, 2, 3, 4, 6, 7, 8, 9]
查看完整描述

6 回答

?
DIEA

TA貢獻1820條經驗 獲得超2個贊

您可以使用list.extend來完成此任務。

slice1?=?a[1:5]
slice2?=?a[6:10]
slice1.extend(slice2)
#?now?use?slice1

它將 slice2 的所有項目附加到第一個 slice1。


查看完整回答
反對 回復 2023-07-18
?
慕容3067478

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 元組,僅用于結束或開始-結束步驟切片。


查看完整回答
反對 回復 2023-07-18
?
慕的地10843

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])


查看完整回答
反對 回復 2023-07-18
?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

我認為以下可能是最有效的方法:

all_slice?=?[*a[1:5],?*a[6:10]]

哪里all_slice持有:

[1,?2,?3,?4,?6,?7,?8,?9]

這看起來很Pythonic。


查看完整回答
反對 回復 2023-07-18
?
PIPIONE

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)


查看完整回答
反對 回復 2023-07-18
?
胡子哥哥

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]


查看完整回答
反對 回復 2023-07-18
  • 6 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號