python-3.x 打印相邻字母时索引超出范围

9gm1akwq  于 2022-11-19  发布在  Python
关注(0)|答案(2)|浏览(139)

我有如下字符串

stg = 'AVBFGHJ'

我希望相邻的字母按预期打印如下

AV

VB

BF

FG

GH

HJ

J None

我尝试了下面的代码,但抛出错误,如“索引超出范围”

我的密码:

for i in range(len(stg)):
    print(stg[i],stg[i+1])
vwoqyblh

vwoqyblh1#

这是注定要发生的。您正在访问的索引超出了字符串的范围。
如果你真的想这样做,你可以这样做

stg = 'AVBFGHJ'
for i in range(len(stg)):
    if (i + 1) < len(stg):
        print(stg[i],stg[i+1])
    else:
        print(stg[i], None)
iecba09b

iecba09b2#

一种简单的Python方法是使用itertools.zip_longest

from itertools import zip_longest

stg = 'AVBFGHJ'

for x in zip_longest(stg, stg[1:]):
    print(*x)

在python 3.10以上的情况下,可以使用itertools.pairwise

print(*(f"{a}{b}" for a,b in itertools.pairwise(stg)), sep='\n')
  • 谢谢@chrslg的评论 *

如果没有itertoools,则可以单独处理最后一种情况:

for x in zip(stg, stg[1:]):
    print(*x)
print(stg[-1], None)

输出量:

A V
V B
B F
F G
G H
H J
J None

相关问题