Эта серия посвящена функциям, часто используемым формам данных, таким как списки, кортежи, словари, массив-numpy, DataFrame-панды и наборы, которые часто используются при обработке данных с помощью Python, подробно описана операция.
Сегодня начнем третью статью из этой серии ---Серия данных Python (три) — Tuple Tuple: «неизменяемая последовательность» Python.
Кортеж Кортеж имеет следующие характеристики
- Неизменяемые последовательности, элементы в кортеже не могут быть удалены, но вы можете использовать оператор del для удаления всего кортежа
- Кортеж — это набор данных, заключенных в круглые скобки "()", а различные элементы разделены символами ","
- В отличие от списков: данные в кортежах не могут быть изменены после их создания.
- Доступ по индексу
утверждение:
L=(1,2,3)
Кортеж с 0 элементами: L = ()
Кортеж с 1 элементом: L=(1,) Обратите внимание на запятую
Создать кортеж
In [1]: 1,2,3
Out[1]: (1, 2, 3)
In [2]: ()
Out[2]: ()
In [3]: (1,)
Out[3]: (1,)
In [4]: 32
Out[4]: 32
In [5]: 32,
Out[5]: (32,)
In [6]: (32,)
Out[6]: (32,)
In [7]: 3*(32+3)
Out[7]: 105
In [8]: 3*(32+3,)
Out[8]: (35, 35, 35)
Основные операции с кортежами
In [9]: t=('a','b',(1,2))
In [10]: t[1] # 取元组内元素
Out[10]: 'b'
In [11]: t[2]
Out[11]: (1, 2)
In [12]: t[2][1]
Out[12]: 2
In [13]: t1=(12,13,14)
In [14]: t2=t1+t # 元组的+号连接
In [15]: t2
Out[15]: (12, 13, 14, 'a', 'b', (1, 2))
In [16]: del t2 # 删除元组
In [17]: t2
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-17-7ac3afd84e12> in <module>()
----> 1 t2
NameError: name 't2' is not defined
In [18]: list_a=[1,2,3]
In [19]: tuple(list_a) # list列表转化为元组
Out[19]: (1, 2, 3)
In [20]: tuple('abc') # str转化为元组
Out[20]: ('a', 'b', 'c')
In [21]: tuple('a','b','c')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-1b062a453ca1> in <module>()
----> 1 tuple('a','b','c')
TypeError: tuple() takes at most 1 argument (3 given)
In [22]: tuple((abc))
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-22-da0a3eef4197> in <module>()
----> 1 tuple((abc))
NameError: name 'abc' is not defined
In [23]: tuple((a,b,c))
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-23-1f4af24915b9> in <module>()
----> 1 tuple((a,b,c))
NameError: name 'a' is not defined
In [24]: tuple((1,2,3))
Out[24]: (1, 2, 3)
In [25]: len((1,2,3)) # 求元组长度
Out[25]: 3
In [26]: (1,2,3)+(4,5,6) # 元组连接
Out[26]: (1, 2, 3, 4, 5, 6)
In [27]: ("a")*4 # 字符串复制
Out[27]: 'aaaa'
In [28]: ("a",)*4 # 元组复制
Out[28]: ('a', 'a', 'a', 'a')
In [29]: 1 in (1,2,3) # 检查元素是否在元组内
Out[29]: True
In [30]: for x in (1,2,3): # 打印元组内元素
...: print(x)
...:
1
2
3
In [31]: max((1,2,3)) # 返回元组最大值
Out[31]: 3
Преобразование списка Python в кортеж
Преобразовать список в кортеж:
temp_list = [1,2,3,4,5]
В ролях temp_list:
tuple(temp_list)
Проверяем успешность конвертации:
print(type(temp_list))
Преобразовать кортеж в список:
temp_tuple = (1,2,3)
Метод аналогичен, и также возможно принудительное преобразование:
list(temp_tuple)
Проверяем успешность конвертации:
print(type(temp_tuple))
На самом деле в повседневной жизни кортежи создаются редко, но столкнуться с проблемами с кортежами очень хлопотно. Выкопайте здесь дыру, я надеюсь, что однажды я смогу узнать больше о кортежах и снова поделиться ими.
Прочитав введение столь многих пар кортежей, вы можете задаться вопросом, кому нужны неизменяемые последовательности, такие как кортежи? Разве мы не можем просто придерживаться списка, не меняя его содержимого?
- Серия данных Python (1) — Список списка: «Кули» Python
- Python Data Series (2) — Словарь: «Большой пожиратель» Python
Обычно это работает. Но по следующим двум важным причинам,Кортежи не заменяемы:
- Кортежи можно использовать в качестве ключей в картах (и элементах наборов), но не в списках;
- Кортежи существуют как возвращаемое значение многих встроенных функций и методов, а это означает, что вам приходится иметь дело с кортежами, пока вы не пытаетесь изменить кортежи, тогда «обработка» кортежей в большинстве случаев обрабатывает их как список для работы (кроме методов, которых нет у кортежей, таких как index и count)
Преимущества неизменности кортежа
Кортеж неизменен по отношению к списку, что позволяет использовать его в качестве ключа в словаре или добавлять в набор, в то время как список не может.
Кортеж отказывается от добавления и удаления элементов (дизайн структуры памяти становится более упорядоченным) в обмен на улучшение производительности: создание кортежа происходит быстрее, чем списка, и занимает меньше места для хранения, чем список. Так что есть поговорка, что «там, где вы можете использовать кортеж, вам не нужен список».
Когда многопоточность является параллельной, кортеж не нужно блокировать, поэтому не нужно беспокоиться о проблемах безопасности, и его намного проще писать.
Оригинальная ссылка:blog.CSDN.net/Soft 1…
Вообще говоря,Список может больше соответствовать всем требованиям последовательности, за исключением особых случаев, рекомендуется использовать список-список..
В следующей статье этой серии мы обсудиммассив (массив) - numpy, который являетсяПоле ИИФорма данных, которая часто используется.