列表索引超出范围,Python。

3

我有一个问题,就是我有一个像这样的一维列表:

List_A = []

我还有另一个列表,类似这样:

List_B = [(1,2,3),(2,3,4),(3,4,5)]

现在我尝试使用:

for i in range(3):
List_A[i] = List_B[i][2]

这意味着我想要将List_B中的每个最后一个数字(第3个)添加到List_A中,但是出现了“索引超出范围”的错误,那么问题出在哪里呢?非常感谢您的帮助。
我知道append方法,但我认为我不能使用它,因为我的代码在循环中,List_B中的值在每一步中都会改变,类似于:
List_A = []

for i in range(5):
List_B = [(i*1,i*2,i*3),(i*2,i*3,i*4),(i*3,i*4,i*5)]  
    for j in range(3):
        List_A[j] = List_B[j][2]

也就是说,如果我使用append方法,List_A将会扩大到15个元素大小,但我需要在每个i循环中刷新值。

List_A = [3] 并不会创建一个长度为3的列表,如果你认为它是这样的话。它实际上只是创建了一个单元素列表,该元素的值为3。 - Cory Kramer
请编辑您的帖子,包括完整的问题而不是答案。请添加相关的示例。 - Bhargav Rao
2个回答

4
问题出在 List_A 上,它只有一个值。在这里,你试图更改列表的索引 12 的值,而实际上它们并不存在。所以你会收到错误信息。
在将 List_A 声明为 [] 后,使用append
for i in range(3):
     List_A.append(List_B[i][2])

这可以使用单个列表推导式完成。
List_A = [i[2] for i in List_B]

编辑后的文章-

将初始化放在第一个循环之后

for i in range(5):
    List_A = []                          # Here 
    List_B = [(1,2,3),(2,3,4),(3,4,5)]  
    for j in range(3):
        List_A.append(List_B[j][2])
    # Do other stuff

3

这个循环是个问题。

for i in range(3):
    List_A[i] = List_B[i][2]

您只能访问List_A [0],其余i的值超出范围。如果您正在尝试填充列表,则应使用append

List_A = []
for i in range(3):
    List_A.append(List_B[i][2])

或者更加Pythonic的方式是使用列表推导式。
List_A = [i[2] for i in List_B]

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