gpt4 book ai didi

python - 获取列表的每一部分

转载 作者:太空狗 更新时间:2023-10-29 17:05:13 25 4
gpt4 key购买 nike

我已经彻底了解了 itertools,但我不知道如何执行以下操作。我想列一个 list 。

x = [1,2,3,4,5,6,7,8] 我想得到一个新列表:

y = [[1],[1,2],[1,2,3],.......[2],[2,3],[2,3,4].....[8]]

我需要所有切片的列表,但不需要组合或排列。

x = list(zip(x[::2], x[1::2])) 很接近,但并不完全符合我的期望

最佳答案

使用 combinations 不是 x,而是 range 可能的切片索引(包括末尾的一个,因此 len (x)+1,因为切片在末尾是独占的)来做切片的端点,然后用它们来切片x:

from itertools import combinations

y = [x[s:e] for s, e in combinations(range(len(x)+1), 2)]

这会尽可能直接地得到您想要的东西。如果你想要(可能)更快的基于 map 的代码,你可以将其改写为(list wrapper unnecessary on Python 2):

from itertools import combinations, starmap

y = list(map(x.__getitem__, starmap(slice, combinations(range(len(x)+1), 2))))

得到相同的结果,但没有任何 Python 字节码执行每个项目,这可能运行得更快(取决于实现)。

关于python - 获取列表的每一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46941498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com