python - 按索引列表对字符串进行切片
问题描述
我有一个列表中存在的长度列表,例如:
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)
解决方案
这种方法基本上每次切片时都会更新字符串,因此我们可以通过简单地将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
推荐阅读
- reactjs - 如何在反应组件中有条件地渲染加载器微调器?
- postgresql - 如何从 postgres 中获取时间戳值?
- django - ElephantSQL 和 Django 不能一起工作,认证失败
- javascript - Javascript 中的自适应年份
- angular - Angular11 响应式表单更改验证以检查重复值
- mongodb - 如何在 Docker 中使用参数 EnableMongoDbEndpoint=3.6 启动 azure-cosmosdb-emulator
- python - MQTT 订阅在多线程中无法正常工作
- javascript - 加密/编码 Cookie - 通用 cookie - React
- linux-kernel - 读取新 USB 设备的接口描述符
- python - 斐波那契数列的总和?