2014-12-03 2 views
0

Вопрос, который я должен был ответить было:добавляя все значения одного списка в другой

Реализовать функцию с подписью

def expand_one_or(course_lists): 

Эта функция принимает список списков строк course_lists и изменяет его следующим образом:

  • Он находит первый список (назовем его lis) в course_lists в котором происходит "/".
  • Затем он находит координату первого "/" в lis (скажем i).
  • Если lis[i-1] и lis[i+1] существуют и оба курса, lis заменяются в course_lists с двумя новыми списками: список идентичной lis но с lis[i] и lis[i+1] удалены, и список идентичен lis но с lis[i] и lis[i-1] удалены.
  • В противном случае все, что происходит, это то, что lis[i] удален с lis.

Код я написал для этого вопроса:

def get_course_details(course_description): 
    beg_1 = "<A Name=" 
    end_1 = "></A>" 
    for i in course_description: 
     course_desc1 = [course_description[i] for i in course_description] 
     course_desc2 = [course_description[i] for i in course_description] 
     course_desc1[i] = [i].replace('<a name=','<A Name=') 
     course_desc2[i] = course_description[i].replace('></a>','></A>') 
     x1 = course_desc1.find(beg_1) 
     y1 = course_desc2.find(end_1) 
     course_code = course_description[x1 + len(beg_1):y1] 
     course_code = course_description.replace('"','') 
     beg_2 = "Prerequisite:" 
     end_2 = "<br>" 
     x2 = course_description.find(beg_2) 
     y2_temp = course_description[x2:] 
     y2 = y2_temp.replace("<BR>", "<br>").find(end_2) 
     prerequisites = y2_temp[:y2 + 1]  
     course_details = [] 
     course_details.extend([course_code, prerequisites]) 
    return course_details 

Однако я получаю ошибку

list indices must be integers, not str 

Я не знаю, как это исправить.

ответ

0

ваш course_description список строки:

заменить это:

for i in course_description: 

к:

for i in range(len(course_description)): 

проверка этой демонстрации, то вы будете это исправить свои собственные:

>>> a = ['a','b','c','d'] 
>>> for i in a: 
...  print a[i]   # i is the element of a not the index 
... 
Traceback (most recent call last): 
File "<stdin>", line 2, in <module> 
TypeError: list indices must be integers, not str 
>>> for i in a: 
...  print i 
... 
a 
b 
c 
d 
>>> for i in range(len(a)):  # i in an integer from 0 to len(a) 
...  print a[i] 
... 
a 
b 
c 
d 
>>> for i,x in enumerate(a):  # enumerate access index and object both in tuple 
...  print i,x 
... 
0 a 
1 b 
2 c 
3 d 
+0

Нет, питонический путь было бы не пытаться индексировать с 'i', а просто использовать' i' * напрямую *. Или используйте 'enumerate()', чтобы получить как индекс, так и объект. –

+0

Кроме того, есть много других проблем в коде, которые упадут, как только это конкретное исключение будет разрешено. –

+0

Подождите, что еще не так с кодом? –