zoukankan      html  css  js  c++  java
  • python(元组)

    元组

    Python 的元组与列表类似,不同之处在于元组的元素不能修改。

    元组使用小括号 ( ),列表使用方括号 [ ]。

    元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可

    创建一个元组

    A = (1,2,'python','happy')             #括号内可不输入内容,即为空元组
    B = 1,2,3,'nice'                       #不用加括号也可以
    print(A)
    print(B)
    print(type(A))

    A = (1) 定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1

    A = (1)                            #不加逗号是整型
    B = (2,)                           #加了逗号是元组
    print(type(A))
    print(type(B))

     

    索引(和列表一样有正反索引)

    A = (1,2,3,'python','happy')
    
    for i in range(5):
        print(A[i])                      #遍历输出A[0]、A[1]、A[2]、A[3]、A[4]

    A = (1,2,3,'python','happy')
    print(A[-1])
    print(A[-2])
    print(A[-3])
    print(A[-4])
    print(A[-5])

    访问元组

    A = (1,2,3,'python','happy')
    print(A[1:3])                   #实际指A[1]到A[2](不包括A[3])
    print(A[:3])                    #不填写默认从A[0]开始
    print(A[1:])                    #从A[1]开始截取所有元素
    print(A[:])
    print(A[1:-1])
    print(A[-1:3])                  #倒着取输出空
    print(A[-1:-3])

    元组中的元素是不可进行修改和删除的(实质是元组所指向的内存中的内容不可变

    A = (1,2,3,'python','happy')
    A[1]=8

    不支持修改元组

    我们重建一个元组试试

    A = (1,2,3,'python','happy')
    print(id(A))
    A = (1,2,3,'python')
    print(id(A))

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

    补充例子:

    A = (1,2,['a','b'])
    A[2][0]='X'
    A[2][1]='y'
    print(A)

    这个元组A定义的时候有3个元素,分别是1,2和一个list(列表)。不是说元组一旦定义后就不可变了吗?怎么后来又变了?

    我们先看看定义的时候元组A包含的3个元素:当我们把list的元素'a'和'b'修改为'X'和'Y'后,表面上看,A的元素确实变了,但其实变的不是A的元素,而是list的元素。元组A一开始指向的list并没有改成别的list,所以,元组所谓的"不变"是说,元组的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!理解了"指向不变"后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变

    不能删除元组中的元素,但我们可以使用del方法删除整个元组

    A = (1,2,3,'python','happy')
    print(A)
    del A
    print(A)                       #元组删除后,输出会有异常信息

    不能修改元组内的元素,但可以进行拼接元组

    A = (1,2,3,'python','happy')
    B = (6,5)
    print(A+B)

    元组运算符

    Python 表达式结果描述
    len((1, 2, 3)) 3 计算元素个数
    (1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接
    ('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 复制
    3 in (1, 2, 3) True 元素是否存在
    for x in (1, 2, 3): print (x,) 1 2 3 迭代

     

    元组的内置函数

    1 len(tuple)
    计算元组元素个数。
    >>> tuple1 = ('Google', 'Runoob', 'Taobao')
    >>> len(tuple1)
    3
    >>>
    2 max(tuple)
    返回元组中元素最大值。
    >>> tuple2 = ('5', '4', '8')
    >>> max(tuple2)
    '8'
    >>>
    3 min(tuple)
    返回元组中元素最小值。
    >>> tuple2 = ('5', '4', '8')
    >>> min(tuple2)
    '4'
    >>>
    4 tuple(iterable)
    将可迭代系列转换为元组。
    >>> list1= ['Google', 'Taobao', 'Runoob', 'Baidu']
    >>> tuple1=tuple(list1)
    >>> tuple1
    ('Google', 'Taobao', 'Runoob', 'Baidu')
  • 相关阅读:
    idea中编译项目报错 java: javacTask: 源版本 1.8 需要目标版本 1.8
    发布返回结果对象中添加冒泡结果字段
    Spring还使用基于 JSR-250 注释,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释
    跨网段IP
    Vlan
    分区工具parted的详解及常用分区使用方法
    dump命令详解
    备份 (综述)
    firewalld 防火墙配置
    find、which、whereis、locate和type之间的区别
  • 原文地址:https://www.cnblogs.com/wuyufeng-9-14/p/15514300.html
Copyright © 2011-2022 走看看