python 数据类型 - tuple

tuple 元组

今天跟你们分享一下Python里面tuple数据类型的学习
ps:list数据类型,以前是写在了jianshu上,暂时我也尚未搬过来,因此贴上连接吧 python

Python数据类型 - list : https://www.jianshu.com/p/5fe...安全


概念

tuple,即元组。是Python内置的一种有序列表。跟list相比,tuple有比较特别的地方。app

  • tuple不可变,一旦初始化定义后就不能修改。因此在定义的时候,元素值最好就肯定下来。
  • tuple获取元素的方法与list一致。可是它没有append()、insert()等方法。

那tuple有什么好处呢?由于不可变,因此代码更加安全。若是能够,尽可能用tuple代替list。函数


1、tuple定义

一、 定义一个空tuple

t = ()
    t  # 调用
    输出:()

二、 定义一个只有一个元素的tuple

以下示例,注意比较“t”与“s”的区别,经过type()函数也能够清楚的看到。学习

>>> t = ('xyz')
>>> t
'xyz'
>>> type(t)
<class 'str'>
>>>
>>> s = ('abc',)
>>> s
('abc',)
>>> type(s)
<class 'tuple'>
>>>

ps:原本贴的图片,发现不方便看 -_-spa

  • 注意哦,必需要添加一个逗号“,”,来消除歧义。

三、定义一个多个元素的tuple

t = (1,2,'abc')
    t # 调用
    输出:(1,2,'abc')

2、“可变的”tuple

  • 刚才说tuple不可变,如今为什么说“可变”呢?试想tuple里的元素是list类型时。

>>> t = ('a','b',['c','d'])       # tuple里包含可变的list
>>> t [2][0]
'c'
>>> t[0][1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> t [2][0] = 'C'                # 修改tuple中的list类型值
>>> t
('a', 'b', ['C', 'd'])
>>> t[0][0] = 'e'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

块一中修改tuple中list的元素,tuple没有变,变的是list的元素。
tuple一开始指向的list并无改变成别的list,id(list)没有变化。因此,tuple所谓的“不变”,是说tuple的每一个元素指向永远不变,可是指向的list内容是可变的。code

  • 另外一种方法改变tuple

>>> h = ('a','b','c')
>>> h1 = ('A',) + h[1:]  # 用slice方法取得列表的一部分,实际上是从新给对象赋值
>>> h1
('A', 'b', 'c')

3、序列赋值

(1)Python中,tuple类型为默认的集合类型

Python中,赋值能够采用序列赋值的方式,以下对象

>>>a,b = 1,2
>>>a,b
>>>(1,2)

clipboard.png

(2)tuple序列做为函数默认的返回值类型,全部不包括符号封装的函数返回值都是元组类型

python函数返回值是一个tuple类型的值。返回值为一个时,括号省略;返回值为多个时,为同一个tuple接收,并把位置赋给相应的值。
若要返回一个list类型,则显示用“[]”进行修改。排序

def swap(x,y):
    return y,x        # return [y,x] 或者 return(y,x)
>>> swap(2,3)
(3, 2)

4、tuple的函数操做

(1) 两个元组的合并操做

  • 两个tuple链接操做:tuple_a + tuple_b
  • tuple乘操做:tuple_a * int_number

实际效果以下图:
clipboard.png教程

(2) in操做符

判断元素i是否在tuple_a中,返回True or False。

if i in tuple_a :
    <action>

(3) 访问元组元素

经过切片来访问元组的元素,它的切片操做跟列表list是同样,也是经过“切片操做符[]”+索引index来访问。

(4) 一些内建函数

  • len():
  • max():
  • min():
  • str():类型转换为string
  • list():类型转换为list
  • operator模块:能够调用里面的比较操做函数、逻辑操做函数、数学操做函数等,感兴趣的能够去看看operator.py文件源码,或者官网教程哦~

(5) 比较操做符

元组还能够进行一些比较操做符的操做,好比“>”、“<”、“==”等,跟数学里同样,对应元素值跟对应元素值进行比较,返回True或者False。
“大于”和“小于”只能比较同类型的tuple,以下示例:

>>> a = (1,2)
>>> b = ('a','b')
>>> c = (1,2,3)
>>> a > b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'int' and 'str'
>>>
>>> a == c
False

你们能够随意去操做一下,就能清楚了,不算是重点。


有小伙伴能告诉我,专栏里的文章如何改变排序吗?

相关文章
相关标签/搜索