• Python内置函数/方法详解—元组tuple


    Python内置函数/方法详解—元组tuple

    元组有序不可更改的集合。在Python中,元组使用圆括号 () 编写的。

    1、创建元组

    元组的创建很简单,使用圆括号 () 直接创建或者使用 tuple() 函数创建,只需要在圆括号中添加元素,并使用逗号隔开即可。

    1.1 使用 () 创建元组

    通过 () 创建元组后,使用 = 将它赋值给变量,格式如下:

    tuple_name = (element_1, element_2, ..., element_n)
    
    • 1

    其中,tuple_name 表示变量名,element_1 ~ element_n 表示元组内的元素。

    1.2 使用 tuple()函数 创建元组

    我们除了可以使用 () 创建元组,还可以使用 tuple() 函数创建元组,但 tuple() 偏向于将某个类型转换为元组,具体用法见下述:

    cre_tuple = tuple(('a', 'b', 'c'))  # 注意双括号
    print(cre_tuple)
    print(type(cre_tuple))
    
    • 1
    • 2
    • 3
    ('a', 'b', 'c')
    <class 'tuple'>
    
    • 1
    • 2

    1.3 元组(单个元素)

    当元组中只包含一个元素时,需要在元素后面添加逗号, ,否则括号会被当作运算符使用:

    tuple_1 = (20)
    print(type(tuple_1))  # 
    
    tuple_2 = (20,)
    print(type(tuple_2))  # 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    当元组中只含一个元素未添加逗号时,使用 type() 打印其类型时,会输出

    当元组中只含一个元素并添加逗号时,使用type() 打印其类型时,会输出

    1.4 元组 VS 列表

    • 在Python中,元组与列表相似,不同之处在于元组的元素不能修改,而列表的元素可以修改
    • 元组使用 小括号(),列表使用 中括号[]

    2、访问元组

    和列表一样,我们既可以使用下标索引访问元组中的某个元素(得到一个元素的值),也可以使用切片访问元组中的一组元素(得到是子元组)。

    2.1 下标索引访问

    下标索引访问元组分为两大类,即正向索引反向索引,格式为 tuple_name[i] ,其中,tuple_name 表示元组名,i表示索引值,i可以是正数(正向索引)也可以是负数(反向索引)。

    可以得知,tuple_name[0]表示元组内第一个元素tuple_name[-1]则表示元组内最后一个元素

    tuple_name = ('wzq', 'lgl', 'gz', 'whl', 'sj', 'hxw')
    print(tuple_name[0])
    print(tuple_name[-1])
    
    • 1
    • 2
    • 3
    wzq
    hxw
    
    • 1
    • 2

    正向索引:从第一个(下标0)开始、第二个(下标1)…

    反向索引:从倒数第一个(下标-1)、倒数第二个(下标-2)…

    2.2 切片访问

    如若对上方描述不太理解,可参考下表:

    元组值wzqlglgzwhlsjhxw
    正向索引012345
    反向索引-6-5-4-3-2-1

    使用切片访问元组的格式为 tuple_name[strat : end : step] ,其中,start 表示起始索引,end 表示结束索引,step 表示步长。

    tuple_name = ('wzq', 'lgl', 'gz', 'whl', 'sj', 'hxw')
    print(tuple_name[1:5:2])
    print(tuple_name[-6:-1:3])
    
    • 1
    • 2
    • 3
    ('lgl', 'whl')
    ('wzq', 'whl')
    
    • 1
    • 2

    在使用切片访问元组元素时,tuple_name[strat : end : step],[start:end] 是左闭右开区间,即访问不了 end 代表的元素。

    2.3 for 循环遍历元组

    可以使用 for 循环遍历元组中的项目:

    fruit_tuple = ('apple', 'pear', 'cherry')
    for i in fruit_tuple:
        print(i)
    
    • 1
    • 2
    • 3
    apple
    pear
    cherry
    
    • 1
    • 2
    • 3

    2.4 检查项目是否存在

    要确定元组中是否存在指定的项,我们可以使用 in 关键字:

    # 检查元组中是否存在'apple'
    fruit_tuple = ('apple', 'pear', 'cherry')
    print('apple' in fruit_tuple)
    
    • 1
    • 2
    • 3
    True
    
    • 1

    使用 in 关键字检查元组中是否存在指定项时,如果存在,则返回 True ;反之,则返回 False

    2.5 更改元组值

    创建元组后,我们将无法更改其值。元组是不可变的,或者也被称为恒定的。

    但是有一种解决方法:可以先将元组转换为列表,更改列表值,然后再将其转换回元组

    fruit_tuple = ('apple', 'pear', 'cherry')
    fruit_list = list(fruit_tuple)
    fruit_list[2] = 'banana'
    fruit_tuple = tuple(fruit_list)
    print(fruit_tuple)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    ('apple', 'pear', 'banana')
    
    • 1

    2.6 元组连接(合并)/复制

    与字符串一样,元组之间可以使用 + 号和 * 号实现元组的连接复制,这就意味着它们可以生成一个新的元组。

    1、+连接

    x = (1, 2, 3)
    y = (4, 5, 6)
    print(x + y)
    
    • 1
    • 2
    • 3
    (1, 2, 3, 4, 5, 6)
    
    • 1

    2、*复制

    x = ('Hello',)
    print(x * 5)
    
    • 1
    • 2
    ('Hello', 'Hello', 'Hello', 'Hello', 'Hello')
    
    • 1

    2.7 元组不可变性

    所谓元组的不可变性指的是元组所指向的内存中的内容不可变。

    tup = ('A', 'B', 'C')
    # tup[0] = 'a'
    
    • 1
    • 2

    不支持修改元素,会报错 TypeError: 'tuple' object does not support item assignment

    tup = ('A', 'B', 'C')
    print(id(tup))
    # 查看内存地址
    tup = (1, 2, 3)
    print(id(tup))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    2671405067264
    2671405072256
    
    • 1
    • 2

    从以上实例可以看出,重新赋值的元组 tup ,绑定到了新的对象了,不是修改了原来的对象。

    3、内置函数

    3.1 打印输出 print()

    1、print()函数

    print() 函数的功能我们已经非常熟悉了,就是打印输出。

    my_tuple = ('name', True, 21)
    print(my_tuple)
    
    • 1
    • 2
    ('name', True, 21)
    
    • 1

    3.2 确定元组项目 len()

    2、len()函数

    当我们要确定一个元组有多少项目(元素)时,可以使用len()函数。

    fruit_tuple = ('apple', 'banana', 'cherry')
    print(len(fruit_tuple))
    
    • 1
    • 2
    3
    
    • 1

    3.3 返回变量类型 type()

    3、type()函数

    使用 type() 函数可以确定变量是什么类型(字符串、列表、元组、字典或集合)。

    当对tup_1 = (20)使用 type() 确定变量类型时,会返回,表明这是一个整型。所以当一个元组只含有一个元素时,一定要加上逗号,

    当对tup_1 = (20,)使用 type() 确定变量类型时,会返回,表明这是一个元组

    3.4 转换为元组 tuple()

    4、tuple()函数

    tuple() 函数的功能是,将其他类型转换为元组类型,详细用法如下:

    • 将字符串转换为元组
    str1 = 'Hello Python'
    print(tuple(str1))
    
    • 1
    • 2
    ('H', 'e', 'l', 'l', 'o', ' ', 'P', 'y', 't', 'h', 'o', 'n')
    
    • 1
    • 将列表转换为元组
    list1 = ['Hello', 'Python']
    print(tuple(list1))
    
    • 1
    • 2
    ('Hello', 'Python')
    
    • 1
    • 将字典转换为元组
    dict1 = {'Hello': 'Python', 'name': 'pink'}
    print(tuple(dict1))
    
    • 1
    • 2
    ('Hello', 'name')
    
    • 1
    • 将集合转换为元组
    set1 = {'Hello', 'Python', 'name', 'pink'}
    print(tuple(set1))
    
    • 1
    • 2
    ('Hello', 'name', 'Python', 'pink')
    
    • 1
    • 将区间转换为元组
    range1 = range(1, 6)
    print(tuple(range1))
    
    • 1
    • 2
    (1, 2, 3, 4, 5)
    
    • 1

    3.5 元组元素最大/小值 max()、min()

    5、max()函数和min()函数

    max() 函数的作用是返回元组中元素最大值min() 函数的作用是返回元组中元素最小值

    tup1 = (4, 6, 2, 0, -5)
    print(max(tup1))
    print(min(tup1))
    
    tup2 = ('a', 'z', 'A', 'Z')
    print(max(tup2))
    print(min(tup2))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    6
    -5
    z
    A
    
    • 1
    • 2
    • 3
    • 4

    3.6 del 删除元组

    元组中的元素值是不允许删除的,但我们可以使用 del 函数来删除整个元组。

    word_tuple = ('a', 'b', 'c')
    del word_tuple
    
    • 1
    • 2

    当我们使用 del 函数删除某元组后,再使用 print() 函数打印输出时,会报错NameError: name 'word_tuple' is not defined,表明该元组未被定义。

    4、内置方法

    4.1 元素出现次数 count()

    count() 方法返回指定值在元组中出现的次数。

    语法

    tuple.count(value)
    
    • 1

    参数值

    参数秒速
    value必需。要检索的项目。

    实例

    返回值 5 在元组中出现的次数:

    num_tuple = (1, 3, 7, 8, 7, 5, 4, 6, 8, 5, 5)
    print(num_tuple.count(5))
    
    • 1
    • 2
    3
    
    • 1

    4.2 元素位置 index()

    index() 方法查找指定值的第一次出现。

    语法

    tuple.index(value)
    
    • 1

    参数值

    参数描述
    value必需。要检索的项目。

    实例

    num_tuple = (1, 3, 7, 8, 7, 5, 4, 6, 8, 5, 5)
    print(num_tuple.index(5))
    
    • 1
    • 2
    5
    
    • 1

    注意:当被搜索值在元组中存在多个,则返回第一次出现的下标。

    num_tuple = (1, 3, 7, 8, 7, 5, 4, 6, 8, 5, 5)
    print(num_tuple.index(999))
    
    • 1
    • 2

    如果未找到该值,index() 方法将引发异常,ValueError: tuple.index(x): x not in tuple

    5、总结

    函数描述
    print()打印输出
    len()确定元组项目
    type()返回变量类型
    tuple()转换为元组
    max()返回元组元素最大值
    min()返回元组元素最小值
    del删除元组
    方法描述
    count()返回元组中指定值出现的次数
    index()在元组中搜索指定的值并返回它被找到的位置

    以上就是本文的全部内容啦!如果对您有帮助,麻烦点赞啦!收藏啦!欢迎各位评论区留言!!!

    最后编辑于:2022/7/25 20:43

  • 相关阅读:
    AJAX请求以及解决跨域的问题
    多线程之四(锁策略+CAS+synchronized)
    no permission 这种问题的解决方法
    Zookeeper应用场景
    【数据结构与算法——C语言】“串操作与算法”之“找出最长串及其长度”
    【系统设计】设计一个限流组件
    springboot自写插件封包
    用js切割文字,超出省略
    软件测试工程师 | 不拼学历,还能进大厂吗?
    服务熔断&服务降级
  • 原文地址:https://blog.csdn.net/m0_70885101/article/details/125999020