簡體   English   中英

多維數組索引

[英]Multi-dimensional array indexing

正在研究一種算法,可以從標准卡片組中分發6張牌,並將交易組合與目標素數進行比較。由於對排列數組“結果”的索引,該代碼錯誤了。有什么建議嗎?

import random
cards=[1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,
10,11,,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13]

deal=[0,0,0,0,0,0]

for i in range(0,6):
    deal[i]=cards.pop(random.randint(0,len(cards)-1))
    print(deal)
Result = [[0 for x in range(3)] for x in range(256)] 

Result[0][0]= deal[0]+deal[1]
Result[0][1]= deal[0]-deal[1]
Result[0][2]= deal[0]*deal[1]
Result[0][3]= deal[0]/deal[1]



for i in range(2,5):
    for j in range(2^(2*j),256):
                   Result[0][j]= Result[0][j]+deal[i]
                   Result[1][j]= Result[0][j]-deal[i]
                   Result[2][j]= Result[0][j]*deal[i]
                   Result[3][j]= Result[0][j]/deal[i]
                   print(Result)

錯誤消息是:追溯(最近一次呼叫最近):文件“ C:/Users/xxx/Desktop/Dealhit.py”,第16行,結果[0] [3] = Deal [0] / deal [1]

IndexError:列表索引超出范圍。 這將創建一個[4x1024]數組,其中大多數都是空值。

for j in range(len(Result-1)):

應該

for j in range(len(result)-1):

否則,將在len(result)之前引用(result - 1) len(result) 導致TypeError: unsupported operand type(s) for -: 'list' and 'int'

因為irange(5) ,所以i可以取值4,將其加到2得出6,這超出了deal范圍。

我建議更換

range(5)

通過

range(len(deal) - 2)

之后,當您嘗試分配Result[1][j] ,您將遇到另一個問題,因為Result僅包含一個元素。 您需要創建所需大小的完整2D矩陣,或者動態附加項。

暫無
暫無

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

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