Python неправильно вычитает списки. - Общение Python мододелов
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Python неправильно вычитает списки.

Регистрация
23 Янв 2013
Сообщения
61
Репутация
0
Спасибо
0
Монет
0
#Вычитаю список 'a' из списка 'b'



a=[1,3,4,5]

b=[4,5,6,7]

for x in b:

----if x in a:

--------b.remove(x)

print(b)



#Ответ должен получиться [6][7], но получается [5][6][7].

Я знаю, что есть варианты решения другими путями, но главный вопрос: "почему данный вариант работает не правильно?"
 
Регистрация
10 Окт 2013
Сообщения
96
Репутация
1
Спасибо
0
Монет
0
Непонятно какой должен быть результат. Да и не проще для этого использовать множества set()
 
Регистрация
25 Ноя 2013
Сообщения
75
Репутация
2
Спасибо
0
Монет
0
так ты сделай for j in a:
а не x потому что он как бы обнуляет x сделай любую другую букву
 
Регистрация
7 Авг 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
309020503_e15bfecc883f58a5e81a8fa592a82847_800.png

Если рассуждать из твоего кода, насколько я догадываюсь, то к примеру во время цикла for есть итерация к примеру вторая и после неё условный оператор if к примеру истинный, тогда из b удаляется переменная, количество переменных становится меньше, но for пропускает в таком случае число
 
Регистрация
12 Дек 2013
Сообщения
76
Репутация
0
Спасибо
0
Монет
0
Не изменяйте список внутри цикла обхода ТОГО же списка
Вы удаляете элементы списка при проходе по нему же
Это некорректно во всех языках, даже чисто по логике
 
Сверху Снизу