如何在 Python 循环中递增索引

How to increment index in Python loop

我想遍历一个字符串并每次捕获 2 个项目,同时还通过 iterable 的索引递增。所以我想切片 2 个项目,但每次循环时将索引增加 1。我该怎么做?

my_string = 'teststring'

期望的输出= 特 是 英石 TS 英石 特 里 在 ng

我尝试了以下方法来对这两个项目进行切片,但无法找出迭代索引的最佳方法

str1 = 'teststring'
i=0
while i<10: 
    i +=1
    str2=str1[0:2]
    print(str2)

这是一个可能的解决方案(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

通过使用 list comprehension,您可以在 one-liner

中完成此操作
s = 'teststring'

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

print(r)