返回特定索引之间的元素



想象一下,您有一个元素列表的情况,例如:arr = ["h4", "p", "p", "h4", "p", "p", "p"]h4值所在的索引列表是:idx = [0, 3]。我的目标是打印出这些索引之间的值,因此输出将是:[["p", "p"], ["p", "p", "p"]]。换句话说,我想打印arr[0:3]和arr[3:],但我想使其动态,例如使用另一个数组CCD_ 5,idx2 = [0, 3, 7]输出将是:[["p", "p"], ["p", "p", "p"], ["p"]](即arr2[0:3]arr[3:7]arr[7:](。

在任何情况下,h4值都将始终位于索引0处。

我不知道是否有人问过类似的问题,因为我找不到,也不知道是否可以这样做。也许类似的任务在leetcode上,如果有人知道什么,请告诉我。

通过使用itertools包中的groupby函数,您可以根据自定义条件lambda term: term == 'p'对列表的术语进行分组。有关详细信息,请参阅文档。

import itertools as it
a = ["h4", "p", "p", "h4", "p", "p", "p", "h4", "p"]

grouped = [list(grp) for match, grp in it.groupby(a, lambda term: term == 'p') if match]

print(grouped)

输出

[['p', 'p'], ['p', 'p', 'p'], ['p']]

最新更新