Вложенный в Python оператор IF, не повторяющий весь список - PullRequest
0 голосов
/ 30 октября 2018

Мне нужна помощь в понимании того, почему он не повторяет полный список, и как я могу это исправить. мне нужно заменить некоторые значения между списком B и списком A, чтобы сделать другой процесс. Код должен дать мне окончательный список

b = ['Sick', "Mid 1", "off", "Night", "Sick", "Morning", "Night"] 

Я думал о 2-х вложенных операторах IF, потому что он оценивает 2 разные вещи. Мой код дает мне

['Sick', 'Mid 1', 'off', 'Night', 'off', 'Morning', 'Night']

, что верно для элемента [0], но не для элемента [4].
Я играл в отступе i = i+1

a = ['Sick', 'PR', '', 'PR', 'Sick', 'PR', 'PR']
b = ["off", "Mid 1", "off", "Night", "off", "Morning", "Night"]

i = 0
for x in the_list:
    for y in see_drop_down_list:
        if x =="off":
            if y == "":
                the_list[i] = "off"

            else:
                the_list[i]=see_drop_down_list[i]
i = i + 1           
print (the_list)

1 Ответ

0 голосов
/ 30 октября 2018

Вам не нужно делать двойную итерацию здесь. Исправленный код:

a = ['Sick', 'PR', '', 'PR', 'Sick', 'PR', 'PR']
b = ['off', 'Mid 1', 'off', 'Night', 'off', 'Morning', 'Night']

for i in range(len(b)):  # loop through all indexes of elements in "b"
    if b[i] == 'off' and a[i]:   # replace element, if it's "off" and corresponding element in "a" is not empty
        b[i] = a[i]

print(b)

Выход:

['Больной', 'Середина 1', 'выкл', 'Ночь', 'Больной', 'Утро', 'Ночь']

...