Кортежи в Python — это неизменяемые последовательности, в которых можно хранить несколько элементов в упорядоченном виде. Списки в Python, напротив, представляют собой упорядоченные изменяемые последовательности. Списки и кортежи вместе представляют собой мощные структуры Python, которые обычно используются для организации данных. В этой статье будут рассмотрены различные методы создания списка кортежей в Python.

Содержание

Методы

В 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')]

с использованием функции zip()

Метод 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)]

с помощью функции map()

Метод 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.

Вот пошаговый подход:

  1. Получите количество кортежей, которые вы хотите ввести.
  2. Для каждого кортежа получите элементы и затем преобразуйте их в нужный тип (например, int или float). В противном случае это будет строковый тип данных в Python.
  3. Добавьте каждый кортеж в список 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)]

как получить список кортежей в качестве входных данных в Python

Добавить комментарий