如何在列表中存储索引

7

我希望能够查找字符串的特定部分并将其存储,但是,我需要存储大量这些字符串,并且我认为将它们存储为主字符串的索引可能更加优雅,而不是作为字符串列表。 我在检索用于操作的索引时遇到了麻烦。 例如:

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

s = 'ABCDEFGHIJKLMN'

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

我是不是从错误的角度考虑这个问题了?


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Benjamin Gruenbaum
3个回答

14
冒号切片语法只能在索引运算符内部使用,例如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']

4

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

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

index1 = [(0,3), (4,8)]

当需要复制子字符串时,请按照以下方式编写代码:

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

0

你的方法是正确的。只是有一个小错误,你在index2列表中指定了索引为字符串,所以为了从中提取字符串,你必须将其转换回整数,所以写成:

index2 = ['0:3','5:6']

s = 'ABCDEFGHIJKLMN'

print(s[int(index2[0][0]):int(index2[0][2])])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接