Pyd*_*man 4 python list slice python-2.7 pandas
对于给定的列表,我希望:
我可以使用组合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.
Run Code Online (Sandbox Code Playgroud)
但这里有一些问题:
Python是否为自定义逐步切片提供了内置机制?FWIW,我实际上正在处理一个大熊猫(版本0.18.0)系列,我刚刚使用了常规列表的例子以便于解释.
您不需要对数据进行多次传递,也不需要进行任何切片:
def nop(x): return x
def op1(x): return x.upper()
def op2(x): return x[::-1]
data = 'One Two Three Four Five Six Seven Eight Nine'.split()
result = [(nop, op1, op2)[i % 3](x) for i, x in enumerate(data)]
Run Code Online (Sandbox Code Playgroud)
产生以下内容result:
['One', 'TWO', 'eerhT', 'Four', 'FIVE', 'xiS', 'Seven', 'EIGHT', 'eniN']
Run Code Online (Sandbox Code Playgroud)
如果不清楚,这里发生的是,第(i%3)个元素作为参数(nop, op1, op2)被调用x,用于枚举中的每个索引i和元素.xdata
显然,如果你需要做的事情来 data,而不是返回一个新的列表,你可以在一个普通这么做for循环:
for i, x in enumerate(data):
data[i] = (nop, op1, op2)[i % 3](x)
Run Code Online (Sandbox Code Playgroud)