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的逻辑问题。
答案 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