Python数据类型之元组

1-创建元组

方法一:用逗号分隔序列值
方法二:tuple函数

# 方法一:用逗号分隔序列值
In [1]: tup = 4, 5, 6
In [2]: tup
Out[2]: (4, 5, 6)

In [3]: nested_tup = (4, 5, 6), (7, 8)
In [4]: nested_tup
Out[4]: ((4, 5, 6), (7, 8))

# 方法二:
In [5]: tuple([4, 0, 2])
Out[5]: (4, 0, 2)

In [6]: tup = tuple('string')
In [7]: tup
Out[7]: ('s', 't', 'r', 'i', 'n', 'g')

2-元组函数

索引

元组中的元素可以通过中括号[ ]来获取。

In [8]: tup[0]
Out[8]: 's'
元组不可变性的应用
# 举例1:元组一旦创建,各个位置上的对象是无法被修改的。
In [9]: tup = tuple(['foo', [1, 2], True])
In [10]: tup[2] = False
--------------------------------------------------------------------
TypeError                          Traceback (most recent call last)
<ipython-input-10-c7308343b841> in <module>()
----> 1 tup[2] = False
TypeError: 'tuple' object does not support item assignment

# 举例2:如果元组中某个元素可变,例如列表,可以在它内部修改
In [11]: tup = ('foo', [1, 2], True)
In [12]:tup[1].append(3)

In [13]: tup
Out[13]: ('foo', [1, 2, 3], True)
连接元组

可以使用+连接元组生成更长的元组:

In [13]: (4, None, 'foo') + (6, 0) + ('bar',)
Out[13]: (4, None, 'foo', 6, 0, 'bar')
拷贝元组

将元组乘以整数,会生成有多份拷贝的元组。列表同。

In [14]: ('foo', 'bar') * 4
Out[14]: ('foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'bar')```
元组拆包

如果想把元组的值赋给变量,Python会对等号右边的值拆包。

# 举例1
In [15]: tup = (4, 5, 6)
In [16]: a, b, c = tup

In [17]: b
Out[17]: 5

# 举例2
In [18]: tup = 4, 5, (6, 7)
In [19]: a, b, (c, d) = tup

In [20]: d
Out[20]: 7

拆包应用

# 应用1:交换(在其他语言中,可能需要第三个变量)
In [21]: a, b = 1, 2
In [24]: b, a = a, b

In [25]: a
Out[25]: 2

In [26]: b
Out[26]: 1

# 应用2:遍历列表或元组组成的序列
In [27]: seq = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]

In [28]: for a, b, c in seq:
   ....:     print('a={0}, b={1}, c={2}'.format(a, b, c))
a=1, b=2, c=3
a=4, b=5, c=6
a=7, b=8, c=9

拆包升级:用rest或_存储剩下的元素

In [29]: values = 1, 2, 3, 4, 5
In [30]: a, b, *rest = values
       # a, b, *_ = values
       
In [31]: a, b
Out[31]: (1, 2)

In [32]: rest
Out[32]: [3, 4, 5]

3-元组方法

count

由于元组的内容和长度是无法改变的,所以常用count计数。

In [34]: a = (1, 2, 2, 2, 3, 4, 2)

In [35]: a.count(2)  # 计算元组中2出现的次数
Out[35]: 4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值