元组 ( Tuple )
定义元组

(value, value1, value2)# 定义一个元组tuple# 用"()"括起来,每个元素用','号隔开即可# 如果列表只有一个元素,第一个元素后面必须加','号## 功能说明:# 和list类似,但元组中的元素不允许被修改
# ================================a = (1, "python", 3.14)b = ("python",)c = (a, b)print(a)print(b)print(c)print(a[1])try:a[1] = "string" # 这里开始会报错except TypeError:print("TypeError")# 输出(1, 'python', 3.14)('python',)((1, 'python', 3.14), ('python',))pythonTypeError# ================================
常用方法
元组转列表 :list( )

# 因为元组通常只能用于查询,不能修改# 如果需要对元组进行修改只能线转成list后再进行操作
# 示例a = (1, "python", 3.14)a = list(a)print(type(a))# 输出<class 'list'>
列表 [ List ]
列表很像,C\C++等编程语言中的数组,只是在Python每个元素储存的数据类型可以是任意的
甚至在List中可以套容器
列表定义

[value0, value1, value2]# 定义一个列表List:# 用"[]"括起来,每个元素用','号隔开即可# 如果列表只有一个元素,第一个元素后面必须加','号## 功能说明:# 与元组不同,list中的每个元素都可以修改
# ================================# 示例a = [1, "python", 3.14]b = ["python",]c = [a, b]print(a)print(b)print(c)print(a[1])a[1] = "string"print(a[1])# 输出[1, 'python', 3.14]['python'][[1, 'python', 3.14], ['python']]pythongstring# ================================
常用操作、方法
——————-修改———————
修改列表 :L = [value0, value1, value2…]
修改元素值 :L[index] = value
列表合并 :L1+L2

# 示例a = [1, "python", 3.14] # 定义列表b = [1,2,3]a = ["Hibari", 6666, True] # 修改列表a[1] = "CN" # 修改元素值print(a)print(a+b)# 输出['Hibari', 'CN', True]['Hibari', 'CN', True, 1, 2, 3]
列表赋值 :List2 = List1[:]
# 这是赋值地址,不是传递列表# 会导致1个列表2个名字List2 = List1
# 正确的列表赋值方式# 赋值整个列表值List2 = List1[:]
—————-删除元素——————
按下标删除 :del L[index]

del L[index]# 参数说明# L 列表# index 整数(下标)## 功能说明# 删除指定元素
# 示例a = [True, "Hello", "World", 3.14]a[-1]a[1]print(a)# 输出[True, 'World']
按下标删除 :pop( )

L.pop(index)# 参数说明# L 列表(进行删除操作的列表)# index 整数(删除的元素下标)## 功能说明# 删除指定元素
# ================================# 示例a = [True, "Hello", "World", 3.14]a.pop()a.pop(1)print(a)# 输出[True, 'World']# ================================
按元素值删除:remove( )

L.remove(value)# 参数说明# L: 列表(进行删除操作的列表)# value: 值(需要删除的元素所含的值)## 返回值# remove(): 无返回值# L: 列表(返回已经删除过的列表)## 功能说明# 找到含有"x"的元素,并把这个元素删除# 但一次只能删除一个,如果要删除全部,需要比较复杂的操作
# 示例1:a = ["Hello", "Hello", "World"]a.remove("Hello")# 输出['Hello', 'World']
# 示例2:利用异常ValueErrora = ["Hello", "Hello", "World"]n = len(a)for i in range(n):try:a.remove("Hello")except ValueError:breakprint(a)# 输出['World']
——————-添加———————
队尾添加 :append( )

L.append(object)# 参数说明:# object: 字符串\数值\序列 (向序列的队尾添加一个元素)# L: 序列(需要添加元素的序列)## 返回值:# append(): 无返回值# L: 序列(返回添加完成后的序列)
# ================================# 示例a = [1, "python", 3.14]a.append(True)print(a)# 输出[1, 'python', 3.14, True]# ================================
指定位置添加 :insert( )

L.insert(index, object)# 参数说明:# index: 整数(需要插入位置的元素下标)# object: 字符串\数值\序列(需要添加的元素)## 返回值# insert(): 无返回值# L: 序列(返回添加完成后的序列)
# ================================# 示例a = [1, "python", 3.14]a.insert(1, True)print(a)# 输出[1, True, 'python', 3.14]# ================================
队尾添加列表 :extend( )

L.extend(iterable)# 参数说明:# L: 序列(被追加的列表)# iterable: 序列(需要追加的内容)## 返回值:# extend(): 无返回值# L: 序列(追加后的序列)
# ================================# 示例a = [1, "pythong", 3.14]b = ["Hello", "World"]a.extend(b)print(a)# 输出[1, 'pythong', 3.14, 'Hello', 'World']# ================================
L1+L2# 用加法运算符也能达到同样的效果
# 示例a = [1, "python", 3.14]b = [1,2,3]print(a+b)# 输出['Hibari', 'CN', 1, 2, 3]
——————-其他———————
长度查询 :len( )

len(object)# 参数说明:# object: 字符串/序列(查询的字符串,或者序列)## 返回值:# len(): 整数(返回字符串的长度,或序列中元素的个数)
# ================================# 示例a = (1, "pythong", 3.14)s = "Hello World"print(len(a))print(len(s))# 输出311# ================================
元素排序 :sort( )

L.sort(key=None, reverse=False)# 参数说明:# L: 列表# reverse: 布尔(True降序,False升序)# key: 函数名(可以自定义一些排序规则)## 功能说明:# 对元素进行排列
# ================================# 示例a = [0, 9, 1, 8, 2, 7, 3, 6, 5]a.sort()print(a)a.sort(reverse=True)# 输出[0, 1, 2, 3, 5, 6, 7, 8, 9][9, 8, 7, 6, 5, 3, 2, 1, 0]# ================================# ================================# 示例2 自定义排序a = [(a, 4), (b, 1), (c, 2), (d, 3)]# a[] 表示列表# a[][] 表示元组# a[x][0]表示元组中第一个元素# a[x][1]表示元组中第二给元素a = [('a', 4), ('b', 1), ('c', 2), ('d', 3)]a.sort(key = lambda x:x[0] , reverse=True)print(a)a.sort(key = lambda x:x[1] , reverse=True)print(a)#输出[('d', 3), ('c', 2), ('b', 1), ('a', 4)][('a', 4), ('d', 3), ('c', 2), ('b', 1)]# ================================# ================================# 示例3 自定义排序(和上面的是一样的)a = [('a', 4), ('b', 1), ('c', 2), ('d', 3)]def f(x):x=x[0]return xdef f2(x):x=x[1]return xa.sort(key = f , reverse=True)print(a)a.sort(key = f2 , reverse=True)print(a)#输出[('d', 3), ('c', 2), ('b', 1), ('a', 4)][('a', 4), ('d', 3), ('c', 2), ('b', 1)]# ================================
# 为了探究key就是个啥,我写了一个这样的代码# ================================a = [('a', 4), ('b', 1), ('c', 2), ('d', 3)]def f(x):print(x)x=x[0]print(x[0])return xa.sort(key = f , reverse=True)#输出('a', 4)a('b', 1)b('c', 2)c('d', 3)d# ================================sort方法会对列表进行一次遍历,Key会依次取列表的一个元素作为'X'进行判断,但在该案例中'x'是一个元组,不能直接进行判断而元组中的元素可以直接用于判断,故取'x[i]'其目的就是为了找一个可以进行判断大小的值
列表切片 :list[ ]

L[start: end: step]# 参数说明:# L: 列表(切片的列表)# start: 整数(起始位置,注意这里的首位是1)(下标:start-1)# end: 整数(末尾位置)(下标:end)# [step]: 整数(步长,隔几个元素保留一次)(默认1)## 功能说明:# 可以选取列表中的一个片段,变成一个新的列表# [:y] 表示从第 '0' 个开始,到第 'y-1' 个结束# [x:] 表示从第 'x' 个开始,到第 '最后一个' 个结束# [x:y] 表示从第 'x' 个开始,到第 'y-1' 个结束# [x:y:k] 表示从第 'x' 个开始,到第 'y-1' 个结束,每间隔 'K-1' 个保留其他舍弃
# ================================# 示例a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]a1 = a[: 5]a2 = a[5: ]a3 = a[3: 8]a4 = a[ : : 2]print(a1)print(a2)print(a3)print(a4)# 输出[0, 1, 2, 3, 4][5, 6, 7, 8, 9][3, 4, 5, 6, 7][0, 2, 4, 6, 8]# ================================
