Python 如何在列表中存储索引

Python 如何在列表中存储索引,python,python-3.x,Python,Python 3.x,我想找到字符串的某些部分并存储它们,但是,我需要存储大量这些字符串,我认为将它们存储为主字符串的索引可能比存储为字符串列表更优雅。检索索引以供使用时遇到问题。例如: index1 = [0:3, 4:8] #invalid syntax index2 = ['0:3','5:6'] s = 'ABCDEFGHIJKLMN' print(s[index2[0]]) #TypeError string indices must be integers 我想得不对吗?您存储索引而不是实际子字符串

我想找到字符串的某些部分并存储它们,但是,我需要存储大量这些字符串,我认为将它们存储为主字符串的索引可能比存储为字符串列表更优雅。检索索引以供使用时遇到问题。例如:

index1 = [0:3, 4:8] #invalid syntax
index2 = ['0:3','5:6']

s = 'ABCDEFGHIJKLMN'

print(s[index2[0]]) #TypeError string indices must be integers

我想得不对吗?

您存储索引而不是实际子字符串的想法很好

对于该机制,您应该将(开始、结束)数字存储为两个整数的元组:

index1 = [(0,3), (4,8)]
当需要复制子字符串时,请编写如下代码:

pair = index1[0]  # (0,3)
sub = s[pair[0] : pair[1]]  # 'ABC'

基于冒号的切片语法仅在索引运算符内部有效,例如
x[i:j]
。相反,您可以在列表中存储
slice
对象,其中
slice(x,y,z)
相当于
x:y:z
,例如

index = [slice(0,3), slice(5,6)]
print([s[i] for i in index])
将打印:

['ABC', 'F']

如果您存储子字符串而不是索引,那么Python在内部不就是这样存储它们的吗?