有什么简单的方法来反演python中的列表切片吗?把所有东西都给我除了一片?例如:
给定列表a = [0,1,2,3,4,5,6,7,8,9],我希望能够提取[7,8,9,0,1,2],即除了a3:7之外的所有内容。
从逻辑上考虑,我认为a-3:3会给我想要的东西,但它只返回一个空列表。
我更喜欢一种同时适用于python 2和3的解决方案。
发布于 2012-10-29 03:14:52
如果你愿意销毁清单(或它的副本),你可以删掉你不想要的部分:
>>> a = [0,1,2,3,4,5,6,7,8,9]
>>> a[3:7] = []
>>> a
[0, 1, 2, 7, 8, 9]订单与您要求的不一样,尽管这对您可能并不重要。
发布于 2012-10-29 03:12:57
切片不是这样包装的,但是a[-3:] + a[:3]会给出这个列表。
发布于 2012-10-29 15:26:10
Itertools是你的朋友
itertools.islice(itertools.cycle(a),7,13)或一般情况
itertools.islice(itertools.cycle(a),gapEnd,len(a)-gapLen)这是一个生成器,所以您可以使用list(...)获得列表,或者在循环中使用它。作为生成器,它不创建列表的额外副本,也不销毁原始副本等。
>>> list(itertools.islice(itertools.cycle(a),7,13))
[7, 8, 9, 0, 1, 2]https://stackoverflow.com/questions/13115435
复制相似问题