元组tuple的常见操作

元组tuple的常见操作

特点

  • 以小括号()表示

  • 其中第一级元素不可变,有序

    val = (1,  '1', {1:'1'}, {'1':1})
    print(type(val))
    print(val)
    
    # 结果
    <class 'tuple'>
    (1, '1', {1: '1'}, {'1': 1})
    
  • 可迭代

创建

  • 创建一个空元组

    val = tuple()
    print(type(val))
    print(val)
    
    # 结果
    <class 'tuple'>
    ()
    
    val = ()
    print(type(val))
    print(val)
    
    # 结果
    <class 'tuple'>
    ()
    
  • 创建含有一个元素的元组

    tuple(elmnt)
    
    val = tuple('a')
    print(type(val))
    print(val)
    
    # 结果
    <class 'tuple'>
    ('a',)
    
    (elmnt,)
    
    print(type(val))
    print(val)
    
    # 结果
    <class 'tuple'>
    ('a',)
    
    • 若直接使用(elmnt)来创建,则创建的是elmnt本身,并不是元组。因为(elmnt)中括号被成运算符的小括号,而不是元组的小括号;所以得加个逗号",",表示创建元组.
  • val1 = (1)
    val2 = (1,)
    print(type(val1))
    print(type(cal2))
    
    # 结果
    <class 'int'>
    <class 'tuple'>
    
  • 创建含有多个元素的元组

    tuple(可迭代对象)
    
    val1 = tuple({1, 2, 3})
    val2 = tuple([1, 2, 2])
    val3 = tuple({1:'2', 1:'a', 'b':3})
    print(val1)
    print(val2)
    print(val3)
    print(type(val1))
    print(type(val2))
    print(type(val3))
    
    # 结果
    (1, 2, 3)
    (1, 2, 2)
    (1, 'b')
    <class 'tuple'>
    <class 'tuple'>
    <class 'tuple'>
    

索引取值

tuple[index] 返回index下对应的值,若index越界,抛异常

val = (1, 0, '2', 'a')
print(val[3])

# 结果
a

切片操作

  • 从左往右是正向(从0开始逐渐增大,直到最右边元素的下标len-1)
  • 从右往左是负向(从-1开始逐渐减小,直到最左边元素的下标-len)
tuple[start:end:direction]
# 从start→end,是一种方向;direction也表示方向(正数表示从左往右,负向表示从右往左)
# 只有当二者的方向一致时,才会进行切片;否则返回空元组

val = (1, 2, 3, 4)
res1 = val[1:3:-1]
res2 = val[-1:-3:1]
print(res1)
print(res2)

# 结果
()
()
val1 = (1, 2, 3, 4)
print(val1[1:3:1])
# 结果
(2, 3)

val2 = (1, 2, 3, 4)
print(val2(-1:-3:-1))
# 结果
(4, 3)
  • 正向切片,当end<len-1时,总是左闭右开[);但当指明end>=len或end留空不写时,则最右侧数若在逐增步长可达到,则取最右侧值,否则不取。

    val = (1, 2, 3, 4)
    print(val[1:3:1])
    print(val[1:4:1])
    print(val[1::1])
    print(val[1::2])
    print(val[1::5])
    
    # 结果
    (2, 3)
    (2, 3, 4)
    (2, 3, 4)
    (2, 4)
    (2,)
    
  • 负向向切片,当end>-len时,总是右闭左开(];但当指明end<=-len或end留空不写时,则最左侧数若在逐减步长可达到,则取最左侧值,否则不取。

    val = (1, 2, 3, 4)
    print(val[-1:-3:-1])
    print(val[-1:-4:-1])
    print(val[-1::-1])
    print(val[-1::-2])
    print(val[-1::-5])
    
    # 结果
    (4, 3)
    (4, 3, 2)
    (4, 3, 2, 1)
    (4, 2)
    (4,)
    

内置函数

tuple.count(elmnt) 返回tuple中count的个数,若elmnt不在tuple中,则返回0
tuple.index(elmnt) 返回elmnt在tuple中第一次出现的下标(正向索引,从左到右)
len(tuple) 返回tuple的长度

其他

tuple1 + tuple2 返回一个将两个元组中元素放在一起的新元组,但两元组中元素的相对位置不变
                (1, 2) + (3, 4)(1, 2, 3, 4)
  
tuple * n 返回一个将tuple中所有元素重复n遍的新元组,但是绝对位置不变
          (1, 2) * 3(1, 2, 1, 2, 1, 2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值