元组 ( 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',))
python
TypeError
# ================================
常用方法
元组转列表 :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']]
pythong
string
# ================================
常用操作、方法
——————-修改———————
修改列表 :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:利用异常ValueError
a = ["Hello", "Hello", "World"]
n = len(a)
for i in range(n):
try:
a.remove("Hello")
except ValueError:
break
print(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))
# 输出
3
11
# ================================
元素排序 :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 x
def f2(x):
x=x[1]
return x
a.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 x
a.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]
# ================================