Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 10, 2019 16:47:58

romzes96
Зарегистрирован: 2016-07-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Пополнение списка внутри списка в цикле while

Здравствуйте. Не подскажите как реализовать пополнение списка внутри списка?
Пробовал вот так:

 Indexs = [] # Индефекатор
Date_of_deliverys = [] # Дата оказания
Doctor_codes = [] # Код врача
Name_of_doctors = [] # ФИО врача
Patients = [] # Пациент КОРЕНЬ пока что остается пустой
Address_Ps = [] # Адрес пациента
Attachment_Ps = [] # Прикрепление пациента
Birthday_Ps = [] # ДР пациента
Name_Ps = [] # ФИО пациента
OMS_policy_Ps = [] # Полис ОМС пациента
Insurance_Ps = [] # Страховка пациента
Code_sisters = [] # Код мед сестры
Name_sisters = [] # ФИО мед сестры
Amounts = [] # Сумма
Amount_of_errors = [] # Сумма ошибок
List_of_services = [] # Список услуг КОРЕНЬ пока что остаеться пустой
Service_Codes_LOSs = [] # Код услуги услуги
Diagnosis_LOSs = [] # Диагноз услуги/пациента
Type_of_diagnosis_LOSs = [] # Тип диагноза услуги/пациента
Service_ID_LOSs = [] # ID услуги услуги
Title_LOSs = [] # Название услуги
Multiplicity_LOSs = [] # Кратность
Sources = [] # Источник
Operators = [] # Операторы
Errors = [] # Ошибки
Obj = [Indexs, Date_of_deliverys, Doctor_codes, Name_of_doctors, Address_Ps, Attachment_Ps, Birthday_Ps, Name_Ps, OMS_policy_Ps, Insurance_Ps, Code_sisters, Name_sisters, Amounts, Amount_of_errors, Service_Codes_LOSs, Diagnosis_LOSs, Type_of_diagnosis_LOSs, Service_ID_LOSs, Title_LOSs, Multiplicity_LOSs, Sources, Operators, Errors]
print(len(Obj))
print(Obj[0])
print(type(Obj[0]))
i = 0
print(i)
while i <= len(Obj):
    #Obj[i].append(str(sheet.row(row)[i]))
    Obj[i].append(str('Тест'))
    i+=1

Но получаю ошибку:
IndexError: list index out of range

Можете подсказать решение данной проблемы?

Офлайн

#2 Апрель 10, 2019 17:49:45

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Пополнение списка внутри списка в цикле while

В строке кода while i < len(Obj): знак “равно” не нужен.

Офлайн

#3 Апрель 10, 2019 18:26:57

romzes96
Зарегистрирован: 2016-07-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Пополнение списка внутри списка в цикле while

rami
В строке кода while i < len(Obj): знак “равно” не нужен.
Спасибо за помощь. Но это не совсем то что нужно. Код изменен.
Вот пример кода, по логике в каждом списке из списка “Obj” должно появиться 100 str('Текст').
 Indexs = [] # Индефекатор
Date_of_deliverys = [] # Дата оказания
Doctor_codes = [] # Код врача
Name_of_doctors = [] # ФИО врача
Patients = [] # Пациент КОРЕНЬ пока что остается пустой
Address_Ps = [] # Адрес пациента
Attachment_Ps = [] # Прикрепление пациента
Birthday_Ps = [] # ДР пациента
Name_Ps = [] # ФИО пациента
OMS_policy_Ps = [] # Полис ОМС пациента
Insurance_Ps = [] # Страховка пациента
Code_sisters = [] # Код мед сестры
Name_sisters = [] # ФИО мед сестры
Amounts = [] # Сумма
Amount_of_errors = [] # Сумма ошибок
List_of_services = [] # Список услуг КОРЕНЬ пока что остаеться пустой
Service_Codes_LOSs = [] # Код услуги услуги
Diagnosis_LOSs = [] # Диагноз услуги/пациента
Type_of_diagnosis_LOSs = [] # Тип диагноза услуги/пациента
Service_ID_LOSs = [] # ID услуги услуги
Title_LOSs = [] # Название услуги
Multiplicity_LOSs = [] # Кратность
Sources = [] # Источник
Operators = [] # Операторы
Errors = [] # Ошибки
Obj = [Indexs, Date_of_deliverys, Doctor_codes, Name_of_doctors, Address_Ps, Attachment_Ps, Birthday_Ps, Name_Ps, OMS_policy_Ps, Insurance_Ps, Code_sisters, Name_sisters, Amounts, Amount_of_errors, Service_Codes_LOSs, Diagnosis_LOSs, Type_of_diagnosis_LOSs, Service_ID_LOSs, Title_LOSs, Multiplicity_LOSs, Sources, Operators, Errors]
print(len(Obj))
print(Obj[0])
print(type(Obj[0]))
x = 100
i = 0
print(i)
if x > 0:
    for k in range(0, x):
        while i <= len(Obj):
            Obj[i].append(str('Тест'))
            i+=1
print(i)
print(Obj[0])
print(Indexs[0])
print(Indexs[1])

Но в итоге получаю ошибку:
 IndexError: list index out of range

Отредактировано romzes96 (Апрель 10, 2019 18:27:46)

Офлайн

#4 Апрель 10, 2019 19:18:24

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Пополнение списка внутри списка в цикле while

Тогда, наверно лучше так:

 Indexs = [] # Индефекатор
Date_of_deliverys = [] # Дата оказания
Doctor_codes = [] # Код врача
Name_of_doctors = [] # ФИО врача
Patients = [] # Пациент КОРЕНЬ пока что остается пустой
Address_Ps = [] # Адрес пациента
Attachment_Ps = [] # Прикрепление пациента
Birthday_Ps = [] # ДР пациента
Name_Ps = [] # ФИО пациента
OMS_policy_Ps = [] # Полис ОМС пациента
Insurance_Ps = [] # Страховка пациента
Code_sisters = [] # Код мед сестры
Name_sisters = [] # ФИО мед сестры
Amounts = [] # Сумма
Amount_of_errors = [] # Сумма ошибок
List_of_services = [] # Список услуг КОРЕНЬ пока что остаеться пустой
Service_Codes_LOSs = [] # Код услуги услуги
Diagnosis_LOSs = [] # Диагноз услуги/пациента
Type_of_diagnosis_LOSs = [] # Тип диагноза услуги/пациента
Service_ID_LOSs = [] # ID услуги услуги
Title_LOSs = [] # Название услуги
Multiplicity_LOSs = [] # Кратность
Sources = [] # Источник
Operators = [] # Операторы
Errors = [] # Ошибки
Obj = [Indexs, Date_of_deliverys, Doctor_codes, Name_of_doctors, Address_Ps, Attachment_Ps, Birthday_Ps, Name_Ps, OMS_policy_Ps, Insurance_Ps, Code_sisters, Name_sisters, Amounts, Amount_of_errors, Service_Codes_LOSs, Diagnosis_LOSs, Type_of_diagnosis_LOSs, Service_ID_LOSs, Title_LOSs, Multiplicity_LOSs, Sources, Operators, Errors]
print(len(Obj))
print(Obj[0])
print(type(Obj[0]))
x = 100
#i = 0
#print(i)
if x > 0:
    for elem in Obj:              #для каждого элемента (списка) elem в Obj
        for k in range(0, x):     #повторяем x раз
            elem.append('Тест')   #добавляем что нужно
#print(i)
print(Obj[0])
print(Indexs[0])
print(Indexs[1])


или так (если нужно через while):
 if x > 0:
    while i < len(Obj):            #убрать 'равно'
        for k in range(0, x):      #повторяем x раз
            Obj[i].append('Тест')
        i+=1                       #обратить внимание на отступ, должен быть под 'for', а не под 'Obj'

Офлайн

#5 Апрель 10, 2019 19:30:23

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Пополнение списка внутри списка в цикле while

 Indexs = [] # Индефекатор
Date_of_deliverys = [] # Дата оказания
Doctor_codes = [] # Код врача
Name_of_doctors = [] # ФИО врача
Patients = [] # Пациент КОРЕНЬ пока что остается пустой
Address_Ps = [] # Адрес пациента
Attachment_Ps = [] # Прикрепление пациента
Birthday_Ps = [] # ДР пациента
Name_Ps = [] # ФИО пациента
OMS_policy_Ps = [] # Полис ОМС пациента
Insurance_Ps = [] # Страховка пациента
Code_sisters = [] # Код мед сестры
Name_sisters = [] # ФИО мед сестры
Amounts = [] # Сумма
Amount_of_errors = [] # Сумма ошибок
List_of_services = [] # Список услуг КОРЕНЬ пока что остаеться пустой
Service_Codes_LOSs = [] # Код услуги услуги
Diagnosis_LOSs = [] # Диагноз услуги/пациента
Type_of_diagnosis_LOSs = [] # Тип диагноза услуги/пациента
Service_ID_LOSs = [] # ID услуги услуги
Title_LOSs = [] # Название услуги
Multiplicity_LOSs = [] # Кратность
Sources = [] # Источник
Operators = [] # Операторы
Errors = [] # Ошибки
Obj = [Indexs, Date_of_deliverys, Doctor_codes, Name_of_doctors, Address_Ps, Attachment_Ps, Birthday_Ps, Name_Ps, OMS_policy_Ps, Insurance_Ps, Code_sisters, Name_sisters, Amounts, Amount_of_errors, Service_Codes_LOSs, Diagnosis_LOSs, Type_of_diagnosis_LOSs, Service_ID_LOSs, Title_LOSs, Multiplicity_LOSs, Sources, Operators, Errors]
print(len(Obj))
print(Obj[0])
print(type(Obj[0]))
if x > 0:
    for k in range(0, x):
        i = 0
        while i < len(Obj):
            Obj[i].append(str('Тест'))
            i+=1
print(i)
print(Obj[0])
print(Indexs[0])
print(Indexs[1])

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version