IndexError:列表索引超出范围为什么我不能处理二维数组?

时间:2017-09-13 06:44:42

标签: python django

我无法处理二维数组。 我写了

[['America', 'America', 'America', 'America', 'America'], ['', '', 'u1000', '500~1000', 'd500'], ['NY', 'City A', '×', '×', '×'], ['NY', 'City B', '×', '×', '×'], ['NY', 'City C', '×', '×', '×'], ['NY', 'City D', '×', '×', '×'], ['NY', 'City E', '×', '×', '×']]

在print(fourrows_transpose)中,显示

city.name = fourrows_transpose[i][1]

现在发生错误:

  

IndexError:列表索引超出范围。

Traceback说:

fourrows_transpose

错了。但我认为fourrows_transpose[2][1]是二维数组,所以我真的无法理解为什么我无法访问Postgres。怎么了?我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

你可以尝试简单的构造:

     for transpose in fourrows_transpose[2:]:
         city.name = transpose[1]
         city.save()
         print(transpose[1])

         price_u1000.name = transpose[2]
         price_u1000.save()
         print(transpose[2])

         price_500_1000.name = transpose[3]
         price_500_1000.save()
         print(transpose[3])

答案 1 :(得分:0)

for i in range(2,len(fourrows_transpose)):
                 ^^^^^^^^^^^^^^^^^^^^^^^
    # ...

假设你有一个数组arrayNumbers = {0,1,2,3,4}

该数组有5个元素(= len(arrayNumbers)),但最大值。 index是4.在这种情况下,你的循环会说:"从索引2运行到索引5。"因此,循环的最后一次运行会尝试访问不存在的arrayNumbers[5]

所以,你需要减少你的最大值。 for循环中的索引值为1。

答案 2 :(得分:0)

Actual problem is here.
city = City.objects.create(name="city", prefecture=pref) 
price_u1000 = Price.upper1000.objects.get(city=city) 
price_500_1000 =Price.from500to1000.objects.get(city=city) 
price_u500 = Price.under500.objects.get(city=city)
here you will have to filter data as you done like

area = Area.objects.filter(name="America").first()

答案 3 :(得分:-1)

因为在你的代码中你有:

for i in range(2,len(fourrows_transpose)):

尝试:

for i in range(0,len(fourrows_transpose)-1):