Python学习笔记--元组

# 若元组只有一个元素,要在后面加上','
def test_turple():
    # 空元组
    a = ()
    print(type(a))  # <class 'tuple'>
    # 不是元组
    b = ('hello')
    print(type(b))  # <class 'str'>
    c = (100)
    print(type(c))  # <class 'int'>
    # 一元组
    d = ('hello',)
    print(type(d))  # <class 'tuple'>
    e = (100,)
    print(type(e))  # <class 'tuple'>


# 打包和解包
def pack_turple():
    # 打包
    a = 1, 10, 100
    print(type(a), a)  # <class 'tuple'> (1, 10, 100)
    # 解包
    i, j, k = a
    print(i, j, k)  # 1 10 100
    # 若解包元素与元组内元素个数不同,则会报错
    # i,j = a # ValueError: too many values to unpack (expected 2)
    # 用星号表达式,有了星号表达式,我们就可以让一个变量接收多个值
    i, *j = a
    print(i)  # 1
    print(type(j), j)  # <class 'list'> [10, 100]
    # 打包解包对字符串,列表也适用
    a, b, *c = range(1, 10)
    print(a, b, c)  # 1 2 [3, 4, 5, 6, 7, 8, 9]
    a, b, c = [1, 10, 100]
    print(a, b, c)  # 1 10 100
    a, *b, c = 'hello'
    print(a, b, c)  # h ['e', 'l', 'l'] o


# 可变参数的原理, 可变参数其实就是将多个参数打包成了一个元组
# 两个**本质上是一个dict
def test_param():
    def add(*args):
        print(type(args), args)
        total = 0
        for val in args:
            total += val
        return total

    print(add(1, 2))  # <class 'tuple'> (1, 2) 3
    print(add(1, 2, 3, 4, 5))  # <class 'tuple'> (1, 2, 3, 4, 5) 15


# 交换两个数的值,python极为简单
def exchange_two_nums(a, b):
    a, b = b, a
    print("a交换后是", a)
    print("b交换后是", b)


# list和 turple区别
# 元组是不可变类型,不可变类型更适合多线程环境,因为它降低了并发访问变量的同步化开销。关于这一点,我们会在后面讲解多线程的时候为大家详细论述。
# 元组是不可变类型,通常不可变类型在创建时间和占用空间上面都优于对应的可变类型。
# 列表和元组都是容器型的数据类型,即一个变量可以保存多个数据。列表是可变数据类型,元组是不可变数据类型,
# 所以列表添加元素、删除元素、清空、排序等方法对于元组来说是不成立的。但是列表和元组都可以进行拼接、成员运算、索引和切片这些操作,
# 就如同之前讲到的字符串类型一样,因为字符串就是字符按一定顺序构成的序列,在这一点上三者并没有什么区别。
# 我们推荐大家使用列表的生成式语法来创建列表,它很好用,也是Python中非常有特色的语法。如 list1 = [x for x in range(1,10)]
if __name__ == '__main__':
    # test_turple()
    # pack_turple()
    # test_param()
    exchange_two_nums(1, 3)

  

posted @ 2021-04-23 00:41  菜鸡要加油  阅读(22)  评论(0编辑  收藏  举报