像这样?
>>> map(lambda x: test_string[slice(*x)], zip(split_points, split_points[1:]+[None]))
['the', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']
We're zip
ing split_points
使用移位的 self,创建所有连续的切片索引对的列表,例如[(0,3), (3,8), ...]
。我们需要添加最后一个切片(32,None)
手动,因为zip
当最短序列用完时终止。
Then we map
在这个列表上有一个简单的 lambda 切片器。请注意slice(*x)
这创建了一个slice https://docs.python.org/2/library/functions.html#slice对象,例如slice(0, 3, None)
我们可以用它来对序列(字符串)进行标准切片项目吸气剂 https://docs.python.org/2/library/operator.html#operator.getitem (__getslice__
在Python 2)。
更多 Pythonic 实现可以使用列表理解来代替map
+lambda
:
>>> [test_string[i:j] for i,j in zip(split_points, split_points[1:] + [None])]
['the', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog']