如何在 Python 循环中增加索引

我想遍历一个字符串并每次捕获 2 个项目,同时还通过可迭代的索引递增。所以我想切片 2 个项目,但每次通过循环将索引增加 1。我怎样才能做到这一点?

我的字符串 = '测试字符串'

期望的输出 = te es st ts st tr ri in ng

我尝试了以下方法来分割这两个项目,但无法找出迭代索引的最佳方法

str1 = 'teststring'
i=0
while i<10: 
    i +=1
    str2=str1[0:2]
    print(str2)
stack overflow How to increment index in Python loop
原文答案
author avatar

接受的答案

通过使用 list comprehension 您可以在单行中做到这一点

s = 'teststring'

r = ' '.join([s[i:i+2] for i in range(len(s)-1)])

print(r)

答案:

作者头像

这是一个可能的解决方案( s 是您的字符串):

for j in range(len(s) - 1):
    print(s[j:j + 2])

另一个:

for c1, c2 in zip(s[:-1], s[1:]):
    print(c1 + c2)
作者头像
str1 = 'teststring'
result = []
for i in range(len(str1) - 1):
    result.append(str1[i:i + 2])

print(result)

输出

['te', 'es', 'st', 'ts', 'st', 'tr', 'ri', 'in', 'ng']
作者头像

由于您尝试在每次迭代中移动切片的起点和终点,因此您希望使用切片的索引+长度作为终点。

您应该在切片完成后进行迭代。这是对您的代码进行最小更改的答案:

str1 = 'teststring'
i=0
while i<=len(str1)-2: 
    str2=str1[i:i+2]
    i += 1
    print(str2)
作者头像

我会使用 for 循环而不是 while 循环,如下所示:

def strangeSlice(string):
    out = ""
    for i in range(len(string)-1):
        out += string[i:i+2]
        if i != len(string)-2:
            out += " "
    print(out)
    return out
def main():
    strangeSlice("teststring")
main() #you need to call the main function to run