【发布时间】:2017-04-07 01:43:27
【问题描述】:
对于给定的列表,我希望:
- 仅对第一个元素,然后是每第三个后续元素(索引 3、6 等),什么都不做
- 从第二个元素(索引 1)开始,然后对于每 3 个元素(索引 4、7 等),执行特定操作
- 从第三个元素(索引 2)开始,然后每 3 个元素(索引 5、8 等)执行不同的操作
我可以使用组合 range(len(mylist)) 和 :: 表示法来逐步分割列表:
1::3 will give me the elements at indices 1, 4, 7, 10 etc.
::2 will give me the elements at indices 0, 2, 4, 6 etc.
但是这里有几个问题:
- 我不需要访问元素 6,例如
- 有一些重叠 两片之间
- 缺少 5 等索引
Python 是否为自定义逐步切片提供内置机制? FWIW,我实际上是在处理一个pandas(0.18.0版)系列,为了便于解释,我只是使用了一个常规列表的例子。
【问题讨论】:
-
你为什么有
::2?2::3听起来更像是您想要实现的目标。请注意,切片符号是start:end:step -
您会使用示例列表示例更好地向其他人解释,并希望基于该列表的输出。并根据例子给出解释
-
据我了解,您已经知道列表切片的工作原理。我不明白你提到的问题部分。
-
@Lolgast 是的
2::3是缺失的部分,谢谢 -
@MoinuddinQuadri 确实如此。感谢您向我展示我所要做的就是重新阅读我想要实现的目标,看看我已经有了答案。
标签: python python-2.7 list pandas slice