簡體   English   中英

如何修復幾個數組中的“ IndexError:列表索引超出范圍”以及如何創建未定義的多維數組

[英]How to fix the 'IndexError: list index out of range' in a couple of arrays and how to create a non-defined multidimensional array

我正在用python制作置換腳本,我在尋找如何制作多維數組,但是我能找到的唯一方法是array3 = [ [ "" for i in range(12) ] for j in range(4) ]是有什么辦法我可以做到,所以它被定義為多維,但不是大小? 我還發現有可能使它像array = [[]]但我找不到將任何內容放入其中的方法。 我試圖將字母和單詞放在數組中,所以我認為我不能使用numpy。 對於另一個問題,索引超出范圍,我正在嘗試這樣做:

array = [ ["a","b","c","d","e","f"],["7","8","9","0","11","12"]]
array2 = [ ["1","2","3","4","5","6"],["g","h","i","j","k","l"]]
array3 = [ [ "" for i in range(12) ] for j in range(4) ]
i,j = 0,0
print(array[0][0] + array2[0][1])
for k in range(3):
    for l in range(2):
        for m in range(4):
            for n in range(7):
                if j > 5:
                    j = 0
                    i += 1
                print(m,n,k,l,i,j)
                array3[m][n] =array[k][l] + array2[i][j]
                j += 1
print(array3)

我試圖將第一個多維數組和第二個多維數組與置換算法放在一起,但是它說索引超出范圍...我要打印的是:a1,a2,a3,a4,a5,a6, ag,ah,aj,ak,al,b1,b2 ...

如果我對您的理解正確,則需要進行4級嵌套:

array = [["a","b","c","d","e","f"],["7","8","9","0","11","12"]]
array2 = [["1","2","3","4","5","6"],["g","h","i","j","k","l"]]

for row in array:  # iterate "rows"
    for cell in row:  # iterate "cells" in a specific "row"
        for row_2 in array2:
            for cell_2 in row_2:
                print '{}{}'.format(cell, cell_2)

這將為您提供:

a1
a2
a3
a4
a5
a6
ag
ah
ai
aj
ak
al
b1
b2
b3
b4
b5
...

使用itertools.chain.from_iterableitertools.product

from itertools import chain, product

for first, second in product(chain.from_iterable(array),
                             chain.from_iterable(array2)):
    print("{}{}".format(first, second))

由於arrayarray2是列表而不是任意可迭代的,因此可以通過將chain本身與參數解包一起使用來縮短此時間:

for first, second in product(chain(*array), chain(*array2)):
    print("{}{}".format(first, second))

可以將array3創建為平面列表:

array3 = ["{}{}".format(first, second) for first, second in product(chain(*array), chain(array2))]

或作為嵌套列表:

array3 = [["{}{}".format(first, second) for second in chain(*array2)] for first in chain(*array)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM