4. Уникальные номера телефонов.

(открыть в новой вкладке)

Условие:

Дан список телефонов:
nums = ['+7 (960) 870-22-29', '+7 (926) 184-98-14', '+7 (960) 750-30-94', '+7 (926) 302-98-89', '+7 (916) 634-55-56', '+7 (960) 814-20-17', '+7 (960) 438-13-75', '+7 (926) 184-98-14', '+7 (960) 616-92-88', '+7 (999) 325-03-31', '+7 (495) 804-89-53', '+7 (926) 184-98-14', '+7 (916) 950-04-91', '+7 (960) 616-92-88', '+7 (960) 616-92-88', '+7 (999) 325-03-31', '+7 (915) 478-27-38', '+7 (916) 254-83-22', '+7 (495) 704-04-87', '+7 (960) 750-30-94', '+7 (499) 148-33-29', '+7 (916) 634-55-56', '+7 (926) 184-98-14', '+7 (900) 045-24-15', '+7 (900) 922-37-25', '+7 (960) 814-20-17', '+7 (495) 804-89-53', '+7 (960) 870-22-29', '+7 (960) 616-92-88', '+7 (960) 750-30-94', '+7 (499) 932-24-07', '+7 (999) 325-03-31', '+7 (916) 634-55-56', '+7 (960) 750-30-94', '+7 (960) 870-22-29', '+7 (960) 750-30-94', '+7 (960) 870-22-29', '+7 (915) 478-27-38', '+7 (960) 616-92-88', '+7 (916) 254-83-22', '+7 (999) 872-70-56', '+7 (926) 184-98-14', '+7 (495) 804-89-53', '+7 (495) 804-89-53', '+7 (495) 804-89-53', '+7 (960) 616-92-88', '+7 (926) 208-72-22', '+7 (900) 922-37-25', '+7 (916) 950-04-91', '+7 (915) 478-27-38', '+7 (926) 208-72-22', '+7 (960) 911-09-70', '+7 (926) 208-72-22', '+7 (999) 325-03-31', '+7 (499) 163-06-85', '+7 (915) 478-27-38', '+7 (926) 302-98-89', '+7 (999) 325-03-31', '+7 (960) 870-22-29', '+7 (916) 950-04-91', '+7 (916) 634-55-56', '+7 (916) 254-83-22', '+7 (900) 335-38-27', '+7 (900) 045-24-15', '+7 (900) 481-88-07', '+7 (999) 325-03-31', '+7 (915) 478-27-38', '+7 (499) 163-06-85', '+7 (960) 870-22-29', '+7 (926) 897-30-99', '+7 (900) 045-24-15', '+7 (916) 950-04-91', '+7 (926) 302-98-89', '+7 (926) 302-98-89', '+7 (900) 481-88-07', '+7 (495) 704-04-87', '+7 (499) 163-06-85', '+7 (495) 804-89-53', '+7 (960) 870-22-29', '+7 (960) 750-30-94', '+7 (900) 922-37-25', '+7 (916) 254-83-22', '+7 (495) 704-04-87', '+7 (960) 814-20-17', '+7 (916) 950-04-91', '+7 (916) 254-83-22', '+7 (960) 750-30-94', '+7 (916) 634-55-56', '+7 (495) 704-04-87', '+7 (999) 325-03-31', '+7 (495) 804-89-53', '+7 (915) 949-38-81', '+7 (926) 208-72-22', '+7 (499) 163-06-85', '+7 (916) 634-55-56', '+7 (916) 634-55-56', '+7 (960) 911-09-70', '+7 (999) 951-31-21', '+7 (900) 481-88-07', '+7 (499) 148-33-29', '+7 (900) 922-37-25', '+7 (926) 208-72-22', '+7 (900) 045-24-15', '+7 (495) 804-89-53', '+7 (916) 634-55-56', '+7 (960) 616-92-88', '+7 (960) 750-30-94', '+7 (916) 634-55-56', '+7 (499) 163-06-85', '+7 (916) 950-04-91', '+7 (915) 949-38-81', '+7 (960) 870-22-29', '+7 (900) 335-38-27', '+7 (960) 870-22-29', '+7 (926) 184-98-14', '+7 (900) 045-24-15', '+7 (915) 478-27-38', '+7 (926) 184-98-14', '+7 (900) 045-24-15', '+7 (900) 045-24-15', '+7 (960) 870-22-29', '+7 (495) 804-89-53', '+7 (900) 045-24-15', '+7 (915) 949-38-81', '+7 (916) 950-04-91', '+7 (960) 870-22-29', '+7 (999) 325-03-31', '+7 (916) 634-55-56', '+7 (499) 163-06-85', '+7 (960) 814-20-17', '+7 (499) 148-33-29', '+7 (999) 872-70-56', '+7 (999) 325-03-31', '+7 (900) 922-37-25', '+7 (960) 616-92-88', '+7 (900) 922-37-25', '+7 (900) 045-24-15', '+7 (916) 634-55-56', '+7 (900) 045-24-15', '+7 (900) 045-24-15', '+7 (999) 872-70-56', '+7 (960) 750-30-94', '+7 (900) 922-37-25', '+7 (960) 911-09-70', '+7 (999) 951-31-21', '+7 (926) 184-98-14', '+7 (900) 922-37-25', '+7 (960) 616-92-88', '+7 (499) 163-06-85', '+7 (495) 804-89-53', '+7 (926) 184-98-14', '+7 (916) 950-04-91', '+7 (960) 870-22-29', '+7 (495) 804-89-53', '+7 (999) 325-03-31', '+7 (900) 045-24-15', '+7 (926) 208-72-22', '+7 (926) 302-98-89', '+7 (926) 302-98-89', '+7 (900) 922-37-25', '+7 (960) 870-22-29', '+7 (900) 481-88-07', '+7 (900) 045-24-15', '+7 (916) 950-04-91', '+7 (960) 750-30-94', '+7 (960) 911-09-70', '+7 (499) 148-33-29', '+7 (960) 616-92-88', '+7 (926) 208-72-22', '+7 (499) 932-24-07', '+7 (916) 634-55-56', '+7 (916) 634-55-56', '+7 (926) 208-72-22', '+7 (900) 045-24-15', '+7 (926) 208-72-22', '+7 (960) 616-92-88', '+7 (495) 804-89-53', '+7 (495) 704-04-87', '+7 (960) 870-22-29', '+7 (499) 932-24-07', '+7 (960) 750-30-94', '+7 (999) 325-03-31', '+7 (900) 922-37-25', '+7 (999) 325-03-31', '+7 (900) 045-24-15', '+7 (960) 750-30-94', '+7 (926) 184-98-14', '+7 (960) 911-09-70', '+7 (916) 707-62-70', '+7 (926) 302-98-89', '+7 (960) 750-30-94', '+7 (900) 481-88-07', '+7 (926) 184-98-14', '+7 (900) 922-37-25', '+7 (495) 804-89-53', '+7 (960) 814-20-17', '+7 (900) 922-37-25', '+7 (926) 302-98-89', '+7 (499) 932-24-07', '+7 (499) 163-06-85']
Вывести номера телефонов, с которых звонили, но только если их коды городов находятся среди множества {499, 495, 916, 968, 888}.

Код:

# первый вариант

# ввод данных
nums = ['+7 (960) 870-22-29', '+7 (926) 184-98-14', '+7 (960) 750-30-94', '+7 (926) 302-98-89', '+7 (916) 634-55-56', '+7 (960) 814-20-17', '+7 (960) 438-13-75', '+7 (926) 184-98-14', '+7 (960) 616-92-88', '+7 (999) 325-03-31', '+7 (495) 804-89-53', '+7 (926) 184-98-14', '+7 (916) 950-04-91', '+7 (960) 616-92-88', '+7 (960) 616-92-88', '+7 (999) 325-03-31', '+7 (915) 478-27-38', '+7 (916) 254-83-22', '+7 (495) 704-04-87', '+7 (960) 750-30-94', '+7 (499) 148-33-29', '+7 (916) 634-55-56', '+7 (926) 184-98-14', '+7 (900) 045-24-15', '+7 (900) 922-37-25', '+7 (960) 814-20-17', '+7 (495) 804-89-53', '+7 (960) 870-22-29', '+7 (960) 616-92-88', '+7 (960) 750-30-94', '+7 (499) 932-24-07', '+7 (999) 325-03-31', '+7 (916) 634-55-56', '+7 (960) 750-30-94', '+7 (960) 870-22-29', '+7 (960) 750-30-94', '+7 (960) 870-22-29', '+7 (915) 478-27-38', '+7 (960) 616-92-88', '+7 (916) 254-83-22', '+7 (999) 872-70-56', '+7 (926) 184-98-14', '+7 (495) 804-89-53', '+7 (495) 804-89-53', '+7 (495) 804-89-53', '+7 (960) 616-92-88', '+7 (926) 208-72-22', '+7 (900) 922-37-25', '+7 (916) 950-04-91', '+7 (915) 478-27-38', '+7 (926) 208-72-22', '+7 (960) 911-09-70', '+7 (926) 208-72-22', '+7 (999) 325-03-31', '+7 (499) 163-06-85', '+7 (915) 478-27-38', '+7 (926) 302-98-89', '+7 (999) 325-03-31', '+7 (960) 870-22-29', '+7 (916) 950-04-91', '+7 (916) 634-55-56', '+7 (916) 254-83-22', '+7 (900) 335-38-27', '+7 (900) 045-24-15', '+7 (900) 481-88-07', '+7 (999) 325-03-31', '+7 (915) 478-27-38', '+7 (499) 163-06-85', '+7 (960) 870-22-29', '+7 (926) 897-30-99', '+7 (900) 045-24-15', '+7 (916) 950-04-91', '+7 (926) 302-98-89', '+7 (926) 302-98-89', '+7 (900) 481-88-07', '+7 (495) 704-04-87', '+7 (499) 163-06-85', '+7 (495) 804-89-53', '+7 (960) 870-22-29', '+7 (960) 750-30-94', '+7 (900) 922-37-25', '+7 (916) 254-83-22', '+7 (495) 704-04-87', '+7 (960) 814-20-17', '+7 (916) 950-04-91', '+7 (916) 254-83-22', '+7 (960) 750-30-94', '+7 (916) 634-55-56', '+7 (495) 704-04-87', '+7 (999) 325-03-31', '+7 (495) 804-89-53', '+7 (915) 949-38-81', '+7 (926) 208-72-22', '+7 (499) 163-06-85', '+7 (916) 634-55-56', '+7 (916) 634-55-56', '+7 (960) 911-09-70', '+7 (999) 951-31-21', '+7 (900) 481-88-07', '+7 (499) 148-33-29', '+7 (900) 922-37-25', '+7 (926) 208-72-22', '+7 (900) 045-24-15', '+7 (495) 804-89-53', '+7 (916) 634-55-56', '+7 (960) 616-92-88', '+7 (960) 750-30-94', '+7 (916) 634-55-56', '+7 (499) 163-06-85', '+7 (916) 950-04-91', '+7 (915) 949-38-81', '+7 (960) 870-22-29', '+7 (900) 335-38-27', '+7 (960) 870-22-29', '+7 (926) 184-98-14', '+7 (900) 045-24-15', '+7 (915) 478-27-38', '+7 (926) 184-98-14', '+7 (900) 045-24-15', '+7 (900) 045-24-15', '+7 (960) 870-22-29', '+7 (495) 804-89-53', '+7 (900) 045-24-15', '+7 (915) 949-38-81', '+7 (916) 950-04-91', '+7 (960) 870-22-29', '+7 (999) 325-03-31', '+7 (916) 634-55-56', '+7 (499) 163-06-85', '+7 (960) 814-20-17', '+7 (499) 148-33-29', '+7 (999) 872-70-56', '+7 (999) 325-03-31', '+7 (900) 922-37-25', '+7 (960) 616-92-88', '+7 (900) 922-37-25', '+7 (900) 045-24-15', '+7 (916) 634-55-56', '+7 (900) 045-24-15', '+7 (900) 045-24-15', '+7 (999) 872-70-56', '+7 (960) 750-30-94', '+7 (900) 922-37-25', '+7 (960) 911-09-70', '+7 (999) 951-31-21', '+7 (926) 184-98-14', '+7 (900) 922-37-25', '+7 (960) 616-92-88', '+7 (499) 163-06-85', '+7 (495) 804-89-53', '+7 (926) 184-98-14', '+7 (916) 950-04-91', '+7 (960) 870-22-29', '+7 (495) 804-89-53', '+7 (999) 325-03-31', '+7 (900) 045-24-15', '+7 (926) 208-72-22', '+7 (926) 302-98-89', '+7 (926) 302-98-89', '+7 (900) 922-37-25', '+7 (960) 870-22-29', '+7 (900) 481-88-07', '+7 (900) 045-24-15', '+7 (916) 950-04-91', '+7 (960) 750-30-94', '+7 (960) 911-09-70', '+7 (499) 148-33-29', '+7 (960) 616-92-88', '+7 (926) 208-72-22', '+7 (499) 932-24-07', '+7 (916) 634-55-56', '+7 (916) 634-55-56', '+7 (926) 208-72-22', '+7 (900) 045-24-15', '+7 (926) 208-72-22', '+7 (960) 616-92-88', '+7 (495) 804-89-53', '+7 (495) 704-04-87', '+7 (960) 870-22-29', '+7 (499) 932-24-07', '+7 (960) 750-30-94', '+7 (999) 325-03-31', '+7 (900) 922-37-25', '+7 (999) 325-03-31', '+7 (900) 045-24-15', '+7 (960) 750-30-94', '+7 (926) 184-98-14', '+7 (960) 911-09-70', '+7 (916) 707-62-70', '+7 (926) 302-98-89', '+7 (960) 750-30-94', '+7 (900) 481-88-07', '+7 (926) 184-98-14', '+7 (900) 922-37-25', '+7 (495) 804-89-53', '+7 (960) 814-20-17', '+7 (900) 922-37-25', '+7 (926) 302-98-89', '+7 (499) 932-24-07', '+7 (499) 163-06-85']
cods = {499, 495, 916, 968, 888}

# преобразуем наши множества в множества со значениями одинакового типа 
nums = set(nums)  
cods = {str(i) for i in cods}

nums_result = set()                                                                         # в это множество будем класть телефоны, кот. удовлетворяют условию
for cod in cods:                                                                            # обойдём все коды городов в цикле, в который вложен цикл со всеми номерами телефонов с условием
    for i in nums:
        if cod in i[4:7]:
            nums_result.add(i)
print("Номера телефонов, коды городов которых находятся среди множества:", nums_result)
		

# второй вариант (здесь мне код нравится больше)

# ввод данных
nums = ['+7 (960) 870-22-29', '+7 (926) 184-98-14', '+7 (960) 750-30-94', '+7 (926) 302-98-89', '+7 (916) 634-55-56', '+7 (960) 814-20-17', '+7 (960) 438-13-75', '+7 (926) 184-98-14', '+7 (960) 616-92-88', '+7 (999) 325-03-31', '+7 (495) 804-89-53', '+7 (926) 184-98-14', '+7 (916) 950-04-91', '+7 (960) 616-92-88', '+7 (960) 616-92-88', '+7 (999) 325-03-31', '+7 (915) 478-27-38', '+7 (916) 254-83-22', '+7 (495) 704-04-87', '+7 (960) 750-30-94', '+7 (499) 148-33-29', '+7 (916) 634-55-56', '+7 (926) 184-98-14', '+7 (900) 045-24-15', '+7 (900) 922-37-25', '+7 (960) 814-20-17', '+7 (495) 804-89-53', '+7 (960) 870-22-29', '+7 (960) 616-92-88', '+7 (960) 750-30-94', '+7 (499) 932-24-07', '+7 (999) 325-03-31', '+7 (916) 634-55-56', '+7 (960) 750-30-94', '+7 (960) 870-22-29', '+7 (960) 750-30-94', '+7 (960) 870-22-29', '+7 (915) 478-27-38', '+7 (960) 616-92-88', '+7 (916) 254-83-22', '+7 (999) 872-70-56', '+7 (926) 184-98-14', '+7 (495) 804-89-53', '+7 (495) 804-89-53', '+7 (495) 804-89-53', '+7 (960) 616-92-88', '+7 (926) 208-72-22', '+7 (900) 922-37-25', '+7 (916) 950-04-91', '+7 (915) 478-27-38', '+7 (926) 208-72-22', '+7 (960) 911-09-70', '+7 (926) 208-72-22', '+7 (999) 325-03-31', '+7 (499) 163-06-85', '+7 (915) 478-27-38', '+7 (926) 302-98-89', '+7 (999) 325-03-31', '+7 (960) 870-22-29', '+7 (916) 950-04-91', '+7 (916) 634-55-56', '+7 (916) 254-83-22', '+7 (900) 335-38-27', '+7 (900) 045-24-15', '+7 (900) 481-88-07', '+7 (999) 325-03-31', '+7 (915) 478-27-38', '+7 (499) 163-06-85', '+7 (960) 870-22-29', '+7 (926) 897-30-99', '+7 (900) 045-24-15', '+7 (916) 950-04-91', '+7 (926) 302-98-89', '+7 (926) 302-98-89', '+7 (900) 481-88-07', '+7 (495) 704-04-87', '+7 (499) 163-06-85', '+7 (495) 804-89-53', '+7 (960) 870-22-29', '+7 (960) 750-30-94', '+7 (900) 922-37-25', '+7 (916) 254-83-22', '+7 (495) 704-04-87', '+7 (960) 814-20-17', '+7 (916) 950-04-91', '+7 (916) 254-83-22', '+7 (960) 750-30-94', '+7 (916) 634-55-56', '+7 (495) 704-04-87', '+7 (999) 325-03-31', '+7 (495) 804-89-53', '+7 (915) 949-38-81', '+7 (926) 208-72-22', '+7 (499) 163-06-85', '+7 (916) 634-55-56', '+7 (916) 634-55-56', '+7 (960) 911-09-70', '+7 (999) 951-31-21', '+7 (900) 481-88-07', '+7 (499) 148-33-29', '+7 (900) 922-37-25', '+7 (926) 208-72-22', '+7 (900) 045-24-15', '+7 (495) 804-89-53', '+7 (916) 634-55-56', '+7 (960) 616-92-88', '+7 (960) 750-30-94', '+7 (916) 634-55-56', '+7 (499) 163-06-85', '+7 (916) 950-04-91', '+7 (915) 949-38-81', '+7 (960) 870-22-29', '+7 (900) 335-38-27', '+7 (960) 870-22-29', '+7 (926) 184-98-14', '+7 (900) 045-24-15', '+7 (915) 478-27-38', '+7 (926) 184-98-14', '+7 (900) 045-24-15', '+7 (900) 045-24-15', '+7 (960) 870-22-29', '+7 (495) 804-89-53', '+7 (900) 045-24-15', '+7 (915) 949-38-81', '+7 (916) 950-04-91', '+7 (960) 870-22-29', '+7 (999) 325-03-31', '+7 (916) 634-55-56', '+7 (499) 163-06-85', '+7 (960) 814-20-17', '+7 (499) 148-33-29', '+7 (999) 872-70-56', '+7 (999) 325-03-31', '+7 (900) 922-37-25', '+7 (960) 616-92-88', '+7 (900) 922-37-25', '+7 (900) 045-24-15', '+7 (916) 634-55-56', '+7 (900) 045-24-15', '+7 (900) 045-24-15', '+7 (999) 872-70-56', '+7 (960) 750-30-94', '+7 (900) 922-37-25', '+7 (960) 911-09-70', '+7 (999) 951-31-21', '+7 (926) 184-98-14', '+7 (900) 922-37-25', '+7 (960) 616-92-88', '+7 (499) 163-06-85', '+7 (495) 804-89-53', '+7 (926) 184-98-14', '+7 (916) 950-04-91', '+7 (960) 870-22-29', '+7 (495) 804-89-53', '+7 (999) 325-03-31', '+7 (900) 045-24-15', '+7 (926) 208-72-22', '+7 (926) 302-98-89', '+7 (926) 302-98-89', '+7 (900) 922-37-25', '+7 (960) 870-22-29', '+7 (900) 481-88-07', '+7 (900) 045-24-15', '+7 (916) 950-04-91', '+7 (960) 750-30-94', '+7 (960) 911-09-70', '+7 (499) 148-33-29', '+7 (960) 616-92-88', '+7 (926) 208-72-22', '+7 (499) 932-24-07', '+7 (916) 634-55-56', '+7 (916) 634-55-56', '+7 (926) 208-72-22', '+7 (900) 045-24-15', '+7 (926) 208-72-22', '+7 (960) 616-92-88', '+7 (495) 804-89-53', '+7 (495) 704-04-87', '+7 (960) 870-22-29', '+7 (499) 932-24-07', '+7 (960) 750-30-94', '+7 (999) 325-03-31', '+7 (900) 922-37-25', '+7 (999) 325-03-31', '+7 (900) 045-24-15', '+7 (960) 750-30-94', '+7 (926) 184-98-14', '+7 (960) 911-09-70', '+7 (916) 707-62-70', '+7 (926) 302-98-89', '+7 (960) 750-30-94', '+7 (900) 481-88-07', '+7 (926) 184-98-14', '+7 (900) 922-37-25', '+7 (495) 804-89-53', '+7 (960) 814-20-17', '+7 (900) 922-37-25', '+7 (926) 302-98-89', '+7 (499) 932-24-07', '+7 (499) 163-06-85']
cods = {499, 495, 916, 968, 888}

# преобразуем наши множества в множества со значениями одинакового типа 
nums = set(nums)  
cods = {str(i) for i in cods}

nums_result = set()                                                                         # в это множество будем класть телефоны, кот. удовлетворяют условию
for num in nums:                                                                            # обойдём все номера в цикле                                             
    if num[4:7] in cods:                                                                    # если срез каждого номера есть в множетсе с кодами, то номер добавить в конечное множество номеров
        nums_result.add(num)
print("Номера телефонов, коды городов которых находятся среди множества:", nums_result)