получение сообщения об ошибке: индекс списка вне допустимого диапазона при разрезании списка? - PullRequest
0 голосов
/ 13 июля 2020

Я хотел бы вырезать записи из списка index, а затем вставить нарезанные записи в новый список f_index. К сожалению, я получаю сообщение об ошибке ниже:

the list index is out of range.

Счетная переменная i остановлена ​​на 129. В списке index всего 973 записей, и мне нужно разрезать их все.

Поскольку это мой первый вопрос, не стесняйтесь давать мне отзывы о том, как я могу задать более точные вопросы в будущее.

Код

f_index = []
i = 0

for eachindex in index:
    
    f_index.append((str(index[i]).split('--')[1].split(';')[0]))
    
    i= i +1 
  
print(f_index)

Ошибка вывода

IndexError                                Traceback (most recent call last)
<ipython-input-154-f0d0c9347c8a> in <module>
      8 for eachindex in index:
      9 
---> 10     f_index.append((str(index[i]).split('--')[1].split(';')[0]))
     11 
     12     i= i +1

IndexError: list index out of range

Ответы [ 4 ]

0 голосов
/ 13 июля 2020

Спасибо за вашу помощь. Я удалил запись проблема c вручную, и теперь она работает.

0 голосов
/ 13 июля 2020

Это работа для хорошего понимания списка c pythoni?

index = [['ACCO;NUM;ACCO -- Acceptances Outstanding;;'],
         ['ACCRT;NUM;ACCRT -- ARO Accretion Expense;;']]

f_index = [rec[0].split(' -- ')[1].split(';')[0] for rec in index]
print(f_index)

['Acceptances Outstanding', 'ARO Accretion Expense']
0 голосов
/ 13 июля 2020

Предполагается, что ваш индекс list выглядит как

[['ACCO;NUM;ACCO -- Acceptances Outstanding;;'], ['ACCRT;NUM;ACCRT -- ARO Accretion Expense;;'],......]

, что означает список списков, в то время как внутренние списки следуют формату:

['<letters>;<letters>;<letters> -- <letters> <letters> <letters>;;']
f_index =[]
for inner_list in index:
    temp=inner_list[0].split('--')
    temp=temp[1].split()
    acc,out=temp[0].strip(),temp[1].strip().strip(';;')
    f_index .append([acc,out])
0 голосов
/ 13 июля 2020

Похоже, что ваш индекс не является типом повторяемого объекта. вы можете проверить это с помощью следующего кода:

>>> from collections.abc import Iterable
>>> isinstance(index , Iterable)

, и результат будет True / False.

строки, массивы, коллекции, кортежи являются повторяемыми, а число не повторяется, например:

>>> name = "ali"
>>> isinstance(name, Iterable)
True
>>> number = 12
>>> isinstance(number, Iterable)
False

* Код протестирован на Python версии 3.8.3

для получения дополнительной информации об итерируемых объектах см. this .

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