【问题标题】:Multi-dimensional array indexing多维数组索引
【发布时间】:2015-07-20 21:55:52
【问题描述】:

正在研究一种算法,从标准套牌中发 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]=成交[0]/成交[1]

IndexError:列表索引超出范围。这会创建一个 [4x1024] 数组,其中大部分为空值。

【问题讨论】:

  • 请发布您的完整错误信息。
  • 你的意思是len(Result) - 1吗?
  • 是的,还在习惯语法

标签: python arrays algorithm sorting indexing


【解决方案1】:
for j in range(len(Result-1)):

应该是

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

否则(result - 1) 将在len(result) 之前被执行。导致TypeError: unsupported operand type(s) for -: 'list' and 'int'

【讨论】:

    【解决方案2】:

    因为irange(5) 中,i 可以取值 4,将其与 2 相加得到 6,这超出了deal 的范围。

    我建议更换

    range(5)
    

    range(len(deal) - 2)
    

    之后,当您尝试分配Result[1][j] 时,您将遇到另一个问题,因为Result 仅包含一个元素。您需要创建所需大小的完整二维矩阵,或动态附加项目。

    【讨论】:

      猜你喜欢
      • 2015-11-04
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 2016-07-16
      • 2015-04-19
      相关资源
      最近更新 更多