[英]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_iterable
和itertools.product
:
from itertools import chain, product
for first, second in product(chain.from_iterable(array),
chain.from_iterable(array2)):
print("{}{}".format(first, second))
由於array
和array2
是列表而不是任意可迭代的,因此可以通過將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.