from itertools import zip_longest def test_zip(): a = [1, 4, 3, 5] b = [123, 323, 543, 234] c = 'asdf' # for i in range(4): # print(a[i], b[i]) res = zip(a, b, c) col1, col2, col3 = zip(*res) print(col1, col2, col3) for i in res: print(i) def test_1(): x = [1, 2, 3] y = [4, 5, 6] zipped = zip(x, y, strict=True) result = list(zipped) print(result) # test_1() def zip_longest_test(): ids = [1, 2, 3, 4] leaders = ['Elon Mask', 'Tim Cook', 'Bill Gates', 'Yang Zhou'] countries = ('Australia', 'USA') records = zip_longest(ids, leaders, countries) print(list(records)) records_2 = zip_longest(ids, leaders, countries, fillvalue='Unknown') print(list(records_2)) def unzip_test(): record = [(1, 'Elon Mask', 'Australia'), (2, 'Tim Cook', 'USA'), (3, 'Bill Gates', 'USA'), (4, 'Yang Zhou', 'China')] ids, leaders, countries = zip(*record) print(ids) print(leaders) print(countries) # unzip_test() def zip_iter_1(): employee_numbers = [2, 9, 18, 28] employee_names = ["Valentin", "Leonti", "Andrew", "Sasha"] salaries = (100, 200, 3000, 450) for name, number, salary in zip(employee_names, employee_numbers, salaries): print(name, number, salary) # zip_iter_1() def zip_dict(): dict_one = {'name': 'John', 'last_name': 'Doe', 'job': 'Python Consultant'} dict_two = {'name': 'Jane', 'last_name': 'Doe', 'job': 'Community Manager'} for (k1, v1), (k2, v2) in zip(dict_one.items(), dict_two.items()): print(k1, '->', v1) print(k2, '->', v2) # zip_dict() def creat_dict(): employee_numbers = [2, 9, 18] employee_names = ["Valentin", "Leonti", "Andrew"] numbers = dict(zip(employee_numbers, employee_names)) employees = dict(zip(employee_names, employee_numbers)) print(numbers) print('------') print(employees) # обновляе словаря other_num = [50, 63] other_names = ['Misha', 'Sergey'] numbers.update(zip(other_num, other_names)) print('------') print(numbers) # creat_dict() def zip_comp(): employee_numbers = [2, 9, 18] employee_names = ["Valentin", "Leonti", "Andrew"] numbers = {num: name for num, name in zip(employee_numbers, employee_names)} names = [name[0]*num for num, name in zip(employee_numbers, employee_names)] print(numbers) print(names) # zip_comp() def zip_matrix(): matrix = [[1, 2, 3, 4], [5, 6, 7, 8]] matrix_trans = [list(i) for i in zip(*matrix)] print(matrix_trans) # zip_matrix() def task_1(): keys = ['Ten', 'Twenty', 'Thirty', 'Forty', 'Fifty', 'Sixty', 'Seventy', 'Eighty', 'Ninety', 'One hundred'] values = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] result = dict(zip(keys, values)) print(result) # task_1() def task_2(): employees = ['Pankratiy', 'Innokentiy', 'Anfisa', 'Yaroslava', 'Veniamin', 'Leonti', 'Daniil', 'Mishka', 'Lidochka', 'Terenti', 'Vladik', 'Svetka', 'Maks', 'Yura', 'Sergei'] identifiers = [77, 48, 88, 85, 76, 81, 62, 43, 5, 56, 17, 20, 37, 32, 96] # employees_data = dict(zip(identifiers, employees)) employees_data = dict(zip(sorted(identifiers), sorted(employees))) print(employees_data) # task_2() def combine_strings(a: str, b: str) -> str: return a + b def get_sum_two_numbers(a: int, b: int) -> int: return a + b def get_sum_three_numbers(a: int, b: int, c: int) -> int: return a + b + c def zip_with_function(list_data, f): combined_list = list(zip(*list_data)) combined_list = list(map(lambda args: f(*args), combined_list)) return combined_list # zip_with_function([[1, 2, 3], [4, 5, 6], [7, 8, 9]], get_sum_three_numbers) # zip_with_function([[1, 2, 4], [3, 5, 8]], get_sum_two_numbers)