首页 > 解决方案 > 按索引列表对字符串进行切片

问题描述

我有一个列表中存在的长度列表,例如:

a = [1, 3, 4]

此外,我的字符串长度正好是 a 的数字之和,这里是 8,看起来像这样:

s = "01100110"

我在 a 的长度上循环,每次,我都希望 a 中出现下一个 n 位。所以在这里,它将是三个运行,给我“0”、“110”和“0110”。

是否有一个非常聪明的想法可以做到这一点,例如通过切片?我脑子里有一些奇怪的复杂方法,但要寻找更有效的方法。

我想出了一些解决方案:

counter_index = 0
counter_sum = 0

for i in range(len(a)):
   res = s[counter_sum:counter_sum+a[counter_index]
   counter_sum += a[counter_index]
   counter_index += 1
   print(res)

标签: pythonpython-3.xslice

解决方案


这种方法基本上每次切片时都会更新字符串,因此我们可以通过简单地将a值直接用作索引值而不是将其添加到现有位置值来获取下一个值。

a = [1, 3, 4]
s = "01100110"
st = s
i = 0
while i < len(a):
    print(st[:a[i]])
    st = st[a[i]:]
    i+=1
 

输出

0
110
0110

推荐阅读