0 python
让我说我有一个 string
s = 'ABCDEFGHIJKLMNOP'
和一个list排序integers
lst = [1, 4, 5, 9]
我怎样写一个函数来取integers,并slice在string相应的?
所需输出:
1)'A'[:1]
2) 'BCD' [1:4]
3) 'E' [4:5]
4) 'FGHI' [5:9]
5) 'JKLMNOP' [9:]
Run Code Online (Sandbox Code Playgroud)
您可以slice()使用索引构造显式对象,然后使用这些切片索引字符串.
从那时起它归结为通常的"如何从序列中获得配对对象",而Python实际上没有内置的解决方案.
一个稍微邪恶,紧凑的解决方案,利用map()可以在锁定步骤中迭代多个序列的事实:
s = 'ABCDEFGHIJKLMNOP'
idx = [1, 4, 5, 9]
parts = [s[slc] for slc in map(slice, [0] + idx, idx + [None])]
Run Code Online (Sandbox Code Playgroud)
如果您有许多索引,请不要这样做,因为它会为索引动态构建两个中间列表.
显然,如果可以idx事先按摩,也可以
from itertools import imap
s = 'ABCDEFGHIJKLMNOP'
idx = [0, 1, 4, 5, 9, None]
parts = [s[slc] for slc in imap(slice, idx[:-1], idx[1:])]
Run Code Online (Sandbox Code Playgroud)