列表(list),是一个有序可变的容器,在里面可以存放多个不同类型的元素。
元组(tuple),是一个有序不可变的容器,在里面可以存放多个不同类型的元素。

类型是否可变

有些对象的 可以改变。值可以改变的对象被称为 可变的 ;值不可以改变的对象就被称为 不可变的 。(一个不可变容器对象如果包含对可变对象的引用,当后者的值改变时,前者的值也会改变;但是该容器仍属于不可变对象,因为它所包含的对象集是不会改变的。因此,不可变并不严格等同于值不能改变,实际含义要更微妙。) 一个对象的可变性是由其类型决定的;例如,数字、字符串和元组是不可变的,而字典和列表是可变的。

1.定义

定义空元组

  1. a = () # 语法一
  2. a = tuple() # 语法二

定义非空元组

  1. v1 = (11, 22, 33)
  2. v2 = ("沐风", "ecithy")
  3. v3 = (True, 666, "ecithy", [11, 22, 33])
  1. # 定义非空元组,可以把两边的括号省略
  2. v1 = 11, 22, 33
  3. v2 = "沐风", "ecithy"
  4. v3 = True, 666, "ecithy", [11, 22, 33]

注意:建议在元组的最后多加一个逗号,用于标识是一个元组。

  1. v1 = (11, 22, 33,)
  2. v2 = ("沐风", "ecithy",)
  3. v3 = (True, 666, "ecithy", [11, 22, 33],)

为什么建议在最后加个逗号呢

  1. v1 = (1) # 1
  2. v2 = (1,) # (1,)

可以发现,元组内只有一个元素的时候,Python会进行优化,此时定义的不一定是元组,v1 = (1)就相当于v1 = 1

可以发现,元组和列表非常相似,只是元组的值不能直接修改。

  1. v1 = (11, 22, 33,)
  2. v1[0] = 1 # TypeError: 'tuple' object does not support item assignment

但是元组的值可以间接修改。

  1. num_list = [11, 22, 33]
  2. v3 = (True, 666, "ecithy", num_list,)
  3. num_list[0] = 999
  4. print(v3) # (True, 666, 'ecithy', [999, 22, 33])

总结:

  1. 元组的元素的数据类型如果是不可变类型(如数字、字符串和元组),那么不能直接修改;
  2. 但是如果是可变类型(如字典和列表),那么可以通过修改可变类型的值来达到修改元组值的目的。
  3. 元组是功能更少的列表

2.操作

元组是功能更少的列表
因此,对照列表,即可