Как решить проблему индекса вне диапазона списка с помощью суммы? - PullRequest
0 голосов
/ 05 августа 2020

Я новичок ie в python, и я пытаюсь вычислить вхождение элемента в двумерном списке, используя for-l oop. Если вхождение> 3, то:

  1. Вставить элемент в список_2
  2. Удалить элемент из списка_1.

К сожалению, Я получаю ошибку индекса вне допустимого диапазона.

Переменные, которые я использую:

data        # numpy array for a series of value
list_1      # a 2-dimensional list for data
list_2      # a list for data after some modification

создать массив

import numpy as np
data=np.array([1,2,3,1,2,3,1,1,3])

Я надеюсь, что позже я вернусь к списку по индексу поэтому я создаю 2 списка с заданной длиной = 9

list_1=[0 for i in range(0,9)]
list_2=[0 for i in range(0,9)]

Затем назначьте каждому элементу в list_1 новый список с именем node.

node будет похож на подмножество list_1.

for k in range(0,9):
node=[data[k],k]   
list1[k]=node     

В узле 2 значения. Первое значение - для данных [i], а второе значение - для индекса i.

Например:

node[i][0]=the value in data[i]
node[i][1]=the index of data[i], which is i

Вот мой код. Ошибка происходит в строка:

sum_count = sum (sublist.count (list1 [i] [0]) для подсписка в list1)

# if list_1 is not empty
while list_1:   
    for i in range(0,9):
        # sum the occurrence of current element
        sum_count=sum(sublist.count(list_1[i][0]) for sublist in list_1)
        
        if sum_count>=3:
            index=list_1[i][1]
            list_2[index]=list_1[i][0]
            list_1.remove(list_1[i])
        else:      
            break

Я проверил значение по индексу = 0,1,2 ... 8 соответственно. Понятия не имею, что не так с index. Буду очень признателен, если кто-нибудь даст мне совет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...