Python 3.6中的错误:"IndexError:列表索引超出范围"。

3

有人可以告诉我我的错误在哪里吗?

realpair = input("")
realpairfinal = []
rp = list(realpair)
print(rp[0],rp[1])
for i in range(0, len(realpair)):
    a = []
    v1 = rp[0]
    v2 = rp[1]
    rp.pop(0)
    rp.pop(0)
    a.append(v1)
    a.append(v2)
    realpairfinal.append(a)
pair = realpairfinal
pair2 = realpairfinal
print(realpairfinal)

如果我的输入是123456,realpairfinal应该是[[1, 2][3, 4][5, 6]],但它告诉我:
1 2
Traceback (most recent call last):
    v1 = rp[0]
IndexError: list index out of range
2个回答

0
realpair = input("")
realpairfinal = []
rp = list(realpair)
for i in range(0, len(realpair)-3):
    a = []
    v1 = rp[0]
    v2 = rp[1]
    rp.pop(0)
    rp.pop(0)
    a.append(v1)
    a.append(v2)
    realpairfinal.append(a)
pair = realpairfinal
pair2 = realpairfinal
print(realpairfinal)

将长度减去三。输出:[['1','2'],['3','4'],['5','6']]


是的,谢谢,那是正确的,但我只是做了 for i in range(0, len(realpair), 2) 而不是减去一个数字,这似乎是一种更通用的写法,因此系统可以获得更多或更少的输入。 - Visonge

0
pairs = [list(realpair[i:i+2]) for i in range(0, len(realpair), 2)]

这里使用了列表推导式来构建列表,而不是创建一个空列表然后向其中添加元素。

我正在取长度为2的子字符串,将其转换为字符列表(使用list()函数),然后将其添加到外部列表中(使用列表推导式)。


2
这是什么意思,我从未在Python中见过这样的代码。你能解释一下吗?但是感谢你在范围结尾处添加了_2_..那是我的错误。 - Visonge
这就是你需要的。^^ - sam46

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