在数组连接尝试期间列出索引超出范围

时间:2013-12-09 03:01:12

标签: python arrays list indexing range

enter code here我试过搜索但找不到这个问题的精确解决方法。我理解当python指定索引不可能或超出范围时发生列表索引错误。对于这个问题,我一直在挠头,因为我认为它在理论上应该是可能的。

本质上,我有三个独立的数组,我想连接它们对应的元素,即array1的第一个元素,array2的第一个元素和array3的第一个元素

然后,我想连接array1的第二个元素,数组2的第二个元素,以及array3的第二个元素等等。

这是我的代码:

i = 0
for i in range (len(array1)):                     #all arrays are the same length

    string_conc = array1[i] + array2[i] + array3[i]

    master_array.append(string_conc)

    i = i + 1

返回此回溯:

Traceback (most recent call last):
  File "parser.py", line 14, in <module>
    string_conc = array1[i] + array2[i] + array3[i]
IndexError: list index out of range

奇怪的是,当我手动输入数组元素的值时,它的工作正常 - 即:

i = 0
for i in range (len(array1)):                     #all arrays are the same length

    string_conc = array1[0] + array2[0] + array3[0]

    master_array.append(string_conc)

    i = i + 1

当我打印时,它会返回正确的值。

我在这里缺少什么?似乎循环无法检索i的值。当我在循环中定义i时,它也可以工作 - 但这就是每次循环运行时将i的值重置为0的逻辑问题。

2 个答案:

答案 0 :(得分:1)

这个功能应该足够了:

zip(array1, array2, array3)

这使得每个列表中包含一个元素的小子列表。如果你想要它们串联连接,你可以使用它:

[''.join(s) for s in zip(array1, array2, array3)]

答案 1 :(得分:1)

这就是你想要的:

master_array = []    
for i in range (len(array1)-1):                    

    string_conc = array1[i] + array2[i] + array3[i]

    master_array.append(string_conc)

您的问题是您使用i执行两项不同的任务,但这并不是您想要的。

你要做的是:

i = 0
for iterations in range(len(array1)-1): # note iterations not i                    

    string_conc = array1[i] + array2[i] + array3[i]

    master_array.append(string_conc)

    i = i + 1