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]
打印(a[1:5]+a[6:10])
FROM -> Aviv Yaniv
b、a = a[1:5]、a[6:10]
打印(b+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]
添加回答
举报