Кортежи в Python — это неизменяемые последовательности, в которых можно хранить несколько элементов в упорядоченном виде. Списки в Python, напротив, представляют собой упорядоченные изменяемые последовательности. Списки и кортежи вместе представляют собой мощные структуры Python, которые обычно используются для организации данных. В этой статье будут рассмотрены различные методы создания списка кортежей в Python.
- Методы
- Метод 1: с использованием [] и ()
- Метод 2: с использованием функции zip()
- Метод 3: с использованием понимания списка
- Способ 4: с помощью функции map()
- Метод 5: создает список кортежей из словаря
- Способ 6: используя вложенные циклы
- Как использовать
Методы
В Python существует множество различных методов создания списка кортежей. Давайте рассмотрим их один за другим с некоторыми наглядными примерами.
Примечание. Чтобы проверить, является ли созданный нами объект списком кортежей в Python, мы воспользуемся функцией type(). Сначала мы проверим внешнюю часть, а затем элементы внутри нее.
Метод 1: с использованием [] и ()
Это самый простой метод, в котором мы напрямую определяем список, содержащий кортежи, используя [] и () в Python. Этот подход подходит, когда у нас есть небольшой фиксированный набор значений кортежа в Python.
Пример: вручную мы создаем список Python, используя скобки [], и создаем кортеж, используя () внутри этого списка.
states_with_dates = [('California', 1850),('Texas', 1845),('Florida', 1845)] print(states_with_dates) print(type(states_with_dates)) print(type(states_with_dates[0]))
Вывод: здесь мы жестко запрограммировали список кортежей на Python.
[('California', 1850),('Texas', 1845),('Florida', 1845)]
Метод 2: с использованием функции zip()
Функция zip() используется для объединения соответствующих элементов из двух или более итераций. Он возвращает итератор кортежей.
Когда у нас есть два списка одинаковой длины в Python и мы хотим соединить элементы по каждому соответствующему индексу, zip() — прямой выбор. Затем выходные данные преобразуются в список Python, что дает нам список кортежей в Python.
Пример. В этом случае мы используем функцию zip(), которая объединяет все элементы из двух или более списков Python в качестве списка кортежей в Python.
states = ['California', 'Texas', 'Florida'] capitals = ['Sacramento', 'Austin', 'Tallahassee'] states_with_capitals = list(zip(states, capitals)) print(states_with_capitals) print(type(states_with_capitals)) print(type(states_with_capitals[0]))
Вывод: здесь мы сначала создаем кортежи с помощью функции zip(), используя элементы каждого списка, а затем преобразуем их в список Python, используя приведение типа list().
[('California', 'Sacramento'),('Texas', 'Austin'),('Florida', 'Tallahassee')]
Метод 3: с использованием понимания списка
Понимание списков — одна из самых любимых функций Python. Они предлагают синтаксически элегантный способ создания списков, выполняя некоторую операцию над каждым элементом существующего списка в Python.
Сценарий: здесь, когда мы объединяем понимание списка с функцией zip(), мы можем взять два списка в Python и перебрать их объединенные элементы, эффективно формируя кортеж Python для каждой пары элементов.
states = ['California', 'Texas', 'New York'] time_zones = ['Pacific', 'Central', 'Eastern'] state_time_zones = [(state, zone) for state, zone in zip(states, time_zones)] print(state_time_zones) print(type(state_time_zones)) print(type(state_time_zones[0]))
Вывод: здесь понимание списков — это краткий способ создания списков в Python. В сочетании с функцией zip() он соединяет каждый элемент из одного списка с соответствующими элементами других списков Python.
[('California', 'Pacific'),('Texas', 'Central'),('New York', 'Eastern')]
Способ 4: с помощью функции map()
Функция map() применяет заданную функцию ко всем элементам входного списка в Python. При использовании для нашей цели прикладная функция по сути создает кортеж из входных элементов.
Использование функции map() с функцией Python (которая просто возвращает кортеж своих аргументов) позволяет нам обрабатывать два списка одновременно и генерировать желаемый список кортежей в Python.
Сценарий: у нас снова есть два разных списка в Python, и нам нужно создать список кортежей в Python с помощью функции map().
states = ['Alaska', 'California', 'Texas'] areas = [663267, 163696, 268596] state_area_tuples = list(map(lambda state, area:(state, area), states, areas)) print(state_area_tuples) print(type(state_area_tuples)) print(type(state_area_tuples[0]))
Вывод: функция map() применяет функцию ко всем элементам входных списков в Python. Здесь лямбда-функция создает кортежи, соединяющие элементы одного списка с соответствующими элементами другого списка Python.
[('Alaska', 663267),('California', 163696),('Texas', 268596)]
Метод 5: создает список кортежей из словаря
Словари Python по своей сути хранят данные в виде пар ключ-значение. Метод items() словаря возвращает объект, подобный набору, предоставляющий представление о его элементах, то есть пары ключ-значение в Python.
Используя список(dictionary.items()), мы можем легко получить список пар ключ-значение в виде кортежей в Python.
Пример: рассмотрим ситуацию, когда у нас есть словарь в Python, и нам нужно преобразовать его в список кортежей в Python.
state_population = {'California': 39538223, 'Texas': 29145505, 'Florida': 21538187} population_tuples = list(state_population.items()) print(population_tuples) print(type(population_tuples)) print(type(population_tuples[0]))
Вывод: словари хранят данные в виде пар ключ-значение. Используя метод items(), мы можем получить эти пары в виде кортежей. И мы используем приведение типа list() в Python для создания списка Python.
[('California', 39538223),('Texas', 29145505),('Florida', 21538187)]
Способ 6: используя вложенные циклы
Вложенные циклы означают использование одного цикла внутри другого, в результате чего внутренний цикл выполняет полный цикл для каждой итерации внешнего цикла в Python.
Если нам нужно соединить каждый элемент одного списка в Python с каждым элементом другого (образуя декартово произведение), то в Python станут полезными вложенные циклы (или понимание списка с помощью вложенных циклов).
Сценарий: рассмотрим ситуацию, когда мы дали два разных списка Python, и нам нужно использовать циклы только для их преобразования в список кортежей в Python.
states = ['New York', 'California'] landmarks = ['Statue of Liberty', 'GG Bridge'] tour_packages = [(state, landmark) for state in states for landmark in landmarks] print(tour_packages) print(type(tour_packages)) print(type(tour_packages[0]))
Вывод: понимание вложенных списков с помощью циклов итеративно объединяет элементы из двух списков в Python. Здесь каждый элемент из одного списка сочетается с каждым элементом из другого списка в Python.
[('New York', 'Statue of Liberty'),('New York', 'GG Bridge'),('California', 'Statue of Liberty'),('California', 'GG Bridge')]
Как использовать
Чтобы принять список кортежей в качестве входных данных в Python, мы можем использовать функцию input(), а затем обработать входные данные, чтобы преобразовать их в список кортежей в Python.
Вот пошаговый подход:
- Получите количество кортежей, которые вы хотите ввести.
- Для каждого кортежа получите элементы и затем преобразуйте их в нужный тип (например, int или float). В противном случае это будет строковый тип данных в Python.
- Добавьте каждый кортеж в список Python.
Пример. Давайте рассмотрим пример того, как мы можем получить ввод от пользователя и создать список кортежей в Python с помощью функции input().
n = int(input("Enter the number of participating cities: ")) city_data = [] for _ in range(n): data_str = input(f"Enter data for city {_ + 1}(format: 'City Name,Expected Participants,Estimated Funds'): ") split_data = data_str.split(',') city_name = split_data[0].strip() expected_participants = int(split_data[1].strip()) estimated_funds = int(split_data[2].strip()) city_data.append((city_name, expected_participants, estimated_funds)) print("\nCity Data:", city_data)
Выход:
Enter the number of participating cities: 3 Enter data for city 1(format: 'City Name,Expected Participants,Estimated Funds'): New York,2,400 Enter data for city 2(format: 'City Name,Expected Participants,Estimated Funds'): Texas,5,1000 Enter data for city 3(format: 'City Name,Expected Participants,Estimated Funds'): California,3,600 City Data: [('New York', 2, 400),('Texas', 5, 1000),('California', 3, 600)]