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)