Удалить одинаковое количество одинаковых элементов двух списков python

Не могу понять одну вещь, у меня есть два списка:

my_list2 = [1261, 1168, 768, 1261, 1550, 1160, 692, 1485, 224, 1117, 90, 1058, 1006, 72, 1273, 1307, 1164, 1164, 196, 326, 1544]

my_list = [397, 1379, 1393, 287, 114, 1051, 1120, 471, 223, 1273, 1262, 1031, 480, 1154, 1195, 946, 1281, 98, 1563, 1096, 1551, 1168, 1117, 360, 768, 1107, 1558, 1393, 287, 942, 745, 918, 1283, 692, 198, 600, 1072, 1539, 1544, 480, 1214, 781, 1546, 98, 231, 1563, 984, 1483, 1551, 1055, 340, 1229, 1491, 1469, 354, 1107, 739, 172, 1123, 828, 1371, 1393, 287, 745, 940, 857, 124, 385, 198, 1072, 1261, 1541, 1550, 862, 1362, 1078, 1031, 1506, 1407, 1479, 1565, 402, 1214, 1281, 239, 1042, 98, 231, 1563, 1551, 1355, 1160, 1361, 315, 229, 1055, 196, 1191, 356, 1562, 956, 638, 1300, 1107, 1232, 739, 699, 90, 871, 1123, 1223, 619, 1072, 1544, 1214, 520, 1535, 1567, 1563, 1151, 304, 1551, 229, 164, 196, 1469, 354, 768, 1296, 1232, 1510, 1559, 1481, 639, 940, 1051, 198, 1312, 1262, 1301, 1031, 1544, 480, 98, 1563, 1551, 1355, 1469, 360, 213, 1559, 397, 172, 692, 1072, 1544, 480, 1479, 1317, 565, 1563, 1551, 1160, 1173, 1092, 1296, 1232, 871, 1573, 1510, 746, 649, 1572, 942, 745, 940, 124, 600, 1072, 1031, 1506, 1144, 1544, 480, 1571, 1220, 562, 1317, 80, 1025, 770, 655, 1563, 1096, 1485, 1551, 1168, 1055, 956, 638, 176, 1435, 1296, 90, 649, 918, 1051, 1223, 1072, 550, 224, 1539, 1031, 1195, 1214, 610, 877, 1099, 770, 1563, 304, 1551, 1355, 1117, 1087, 354, 956, 1296, 90, 397, 1058, 1393, 649, 692, 385, 619, 1072, 1258, 1093, 1006, 1031, 1571, 1214, 1025, 1546, 770, 1563, 72, 340, 1468, 85, 1573, 1123, 828, 1371, 287, 942, 940, 1318, 857, 114, 1051, 1283, 385, 1072, 1312, 227, 1242, 1506, 1214, 1281, 610, 1545, 1563, 1096, 426, 1485, 938, 1536, 1361, 229, 196, 768, 739, 90, 871, 1573, 1512, 1123, 649, 287, 745, 1086, 330, 1051, 1549, 1258, 1273, 235, 1506, 480, 946, 1183, 770, 1535, 1563, 1485, 1470, 1562, 638, 101, 1246, 1393, 940, 1185, 619, 1072, 1120, 866, 480, 1214, 1307, 655, 1567, 1248, 819, 938, 1504, 229, 1055, 1164, 828, 1379, 1393, 287, 942, 1277, 918, 1051, 692, 802, 385, 1258, 1031, 1317, 610, 1546, 421, 1042, 655, 1535, 1412, 231, 938, 1361, 1504, 229, 196, 326, 1469, 1562, 768, 90, 1123, 743, 287, 940, 224, 1544, 1160, 1361, 1504, 196, 878, 1562, 768, 150]

Мне необходимо удалить столько элементов массиве my_list сколько их в my_list2 Я пробовал делать следующее:

for i in my_list:
    if i in my_list2:
        my_list.remove(i)
        break
for k in my_list:
    if k == 692:
        print(k)

Но я все также получаю 4 элемента 692, но, исходя из условия, их должно быть 3, т.е. на один меньше, т.к. в my_list2 такой элемент один. Также я пробовал:

li = list(set(my_list) - set(my_list2))
for k in li:
    if k == 692:
        print(k)

Также безуспешно...


Ответы (2 шт):

Автор решения: Юрыч BRO

Вам нужно пройтись циклом по my_list2, поскольку там и находятся все элементы, которые нужно удалить. Берем элемент my_list2, если он входит в большой список, то удаляем его из большого списка.

for j in my_list2:
    if j in my_list:
        my_list.remove(j)

print(my_list.count(692)) # возвращает 3

@Mango подсказал еще один способ - списковое включение:

[my_list.remove(i) for i in my_list2 if i in my_list]

Не нужно его никуда передавать, просто после объявления списков вставить эту строчку

→ Ссылка
Автор решения: Mango
for b in my_list2:
    if b in my_list:
        my_list.remove(b)

for k in my_list:
    if k == 692:
        print(k)

перебор всех елементов my_list можно было не делать

→ Ссылка