Python 3.6“IndexError:列表索引超出范围”

Posted

技术标签:

【中文标题】Python 3.6“IndexError:列表索引超出范围”【英文标题】:Python 3.6 "IndexError: list index out of range" 【发布时间】:2018-10-29 10:03:07 【问题描述】:

谁能告诉我我的错误?

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

【问题讨论】:

【参考方案1】:
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),这似乎是一种更通用的写下方法,因此系统也可以或多或少地获得输入跨度> 【参考方案2】:
pairs = [list(realpair[i:i+2]) for i in range(0, len(realpair), 2)]

这是使用list comprehension 构造一个列表,而不是创建一个空列表,然后将元素附加到它。

我正在获取长度为 2 的子字符串,使用 list() 将其添加到字符列表中,然后将其添加到外部列表中(使用列表理解)

【讨论】:

这是什么意思,我从来没有在python中看到过这样的代码。你能解释一下吗?但是我感谢您在范围末尾的 2 .. 那是我的错误 你去。 ^^

以上是关于Python 3.6“IndexError:列表索引超出范围”的主要内容,如果未能解决你的问题,请参考以下文章

使用conda升级到python 3.6

谷歌云:需要 python 3.6,在 ssh 中是 3.6,但在 jupyter notebook 中仍然是 3.5

在 slim python 3.6 docker 映像上运行 python mysql 客户端

如何将 python 3.7 降级到 3.6?

python-3.6中带有'f'前缀的字符串

windows系统Python-3.6安装教程(保姆级教程)