Автор оригинала: Rikesh Nichani.
Кортежи, строки и списки
Прежде чем мы посмотрим на создание кортежей, в качестве отправной точки, было бы полезно прояснить значение различных терминов, которые мы будем использовать на протяжении всей этой статьи:
- А строка Это последовательность символов и представляет собой один из основных типов данных Python.
- А Список Используется для хранения нескольких элементов в одной переменной, список позволяет дублировать значения, заказывается и является смешной. Список элементов могут быть разными типами данных.
- А кортеж Также используется для хранения нескольких элементов в отдельной переменной, кортеж позволяет упорядочить дублирующие значения, и неизменяется. Предметы кортежей могут быть разными типами данных.
Как вы можете видеть, в большинстве уважение, кортежи и списки идентичны, но они отличаются двумя ключевыми свойствами:
- Кортеры определяются, охватывающие элементы в скобках
()
, тогда как списки используют квадратные скобки[]
- Кортежи неизменяются, что однажды создаваемые они могут не быть изменен. Списки, с другой стороны, смены, что означает они может быть измененным после создания.
Функция Tupple ()
Итак, теперь мы уточнили терминологию, мы можем посмотреть на создание кортежей, и к счастью для нас Python имеет Встроенная функция Для этой цели: кортеж ()
Отказ
Есть два способа, чтобы мы могли использовать эту функцию, поэтому давайте начнем с создания простой строки и списка строк:
my_string = 'Hello' my_list = ('today', 'is', 'Wednesday')
И мы можем подтвердить, что они действительно правильный тип следующим образом:
print(type(my_string)) #print(type(my_list)) #
Конверсия списка
По умолчанию кортеж ()
Функция превращает объект списка в кортеж, поэтому сделать эту работу для нашего примера, нам нужно:
- Преобразовать наш строковый объект в список, включив его в квадратные скобки
[]
- Добавить Этот новый объект списка к нашему существующему списку (my_list) с ‘
+
« - Преобразуйте результирующий список в кортеж, передавая его в
кортеж ()
функция
res = tuple([my_string] + my_list) print(res) # ('Hello', 'today', 'is', 'Wednesday')
И просто чтобы подтвердить, что мы действительно имеем кортеж:
print(type(res)) # tuple
Преобразование кортежей
В качестве альтернативы мы можем преобразовать как нашу строку, так и список непосредственно в кортеж следующим образом:
>>> res1 = (my_string,) + tuple(my_list) >>> res1 ('Hello', 'today', 'is', 'Wednesday')
И просто чтобы подтвердить, что мы действительно имеем кортеж:
>>> type(res1) tuple
Как вы, возможно, заметили, с этим методом мы не преобразовали нашу строку в объект списка, и мы явно не визием его кортеж, передавая его через кортеж ()
функция. Кроме того, вы, вероятно, заметили запятую «,» после my_string
Переменная. Это не опечатка! Это все из-за того, как Python рассматривает отдельные вещи в кортеже.
Создание кортежа из одного предмета
Чтобы понять это, давайте посмотрим, что произойдет, если бы мы прошли один элемент строки, в нашем случае my_string
Переменная, через нашу функцию кортежей без запятой:
>>> single = tuple(my_string) >>> single ('H', 'e', 'l', 'l', 'o')
Как видите, Python предположил, что каждый символ строки представляет собой отдельный элемент. Чтобы наше my_string
Переменная рассматривается как один элемент, нам нужно добавить запятую:
>>> single = tuple(my_string,) >>> single ('H', 'e', 'l', 'l', 'o')
Хорошо, так что это не был результатом, который мы тоже ожидали! Опять же, это до того, как Python создает кортежи с одним предметами – независимо от того, является ли это строкой, целым числом или плавать Отказ Просто добавив запятую после нашего товара, Python знает, что это кортеж. Явно проехав через кортеж ()
Функция, Python предполагает каждый персонаж следует рассматривать как отдельный элемент. Поэтому, если у нас есть единый товар, и мы хотим создать кортеж, мы просто должны поставить запятую после него, нам даже не нужны скобки:
>>> single = my_string, >> single ('Hello',)
И мы можем подтвердить, что этот предмет действительно кортеж:
>>> type(single) tuple
Использование скобок ()
Это привело нас к последнему тему в этой статье, использование скобок для создания кортежа. Как мы видели при создании кортежа из одного предмета, скобки очень намного необязательно. Python создаст кортеж чисто на основе использования запятой после нашего предмета:
single = my_string,
Такой же как:
single = (my_string,)
Точно так же мы можем напрямую создать кортеж, используя запятую для разделения нескольких элементов:
my_tuple = 'Hello', 'today', 'is', 'Wednesday' print(my_tuple) # ('Hello', 'today', 'is', 'Wednesday') print(type(my_tuple)) # tuple
Поэтому запятая, которая создает кортеж в Python, а не в скобках.
Резюме
Как мы сосредоточились только на создании кортежа из строки и списка строк, кортеж ()
Функция оказалась идеальной. Это логично и просто, и разница между Список преобразования и Конверсия кортежа Методы минимальны. Хотя, если это скорость, у вас после того, как метод преобразования кортежа, очевидно, быстрее.
Если вы хотите создать кортеж из одного элемента, будь то строка, целое число или поплавок, мы видели, что запятая то, что на самом деле говорит Python, мы хотим создать кортеж. На самом деле, мы видели, что мы можем использовать запятую на одном и нескольких предметах, чтобы создать кортеж, даже без скобок.
Хотя использование скобок в этих экземплярах действительно необязательно, это хорошо, чтобы они в любом случае их включают – чтобы кто-нибудь читал ваш код, знает, что вы явно хотели создать кортеж и избежать какой-либо двусмысленности.