1.列表
列表使用方括号括起来的[ ],每个元素以逗号分隔
可以储存不同的数据类型数据
1、特点
- 是一个有序的
- 可以重复的
- 可变类型
2、创建
-
创建空列表
li=[]
-
创建多元素列表
li=[1,2,3,'a','gollege',['p','y','t']]
3、拼接
li1=li2+li3
4、重复
print(li1*3)
5、索引(偏移),切片
li=['a','b','c','like','e','f']
print(len(li))
print((li[0],li[-1]))
print(li[1:5])
print(li[::-1])
print(li[3][2])
#输出结果
6
('a', 'f')
['b', 'c', 'like', 'e']
['f', 'e', 'like', 'c', 'b', 'a']
k
6 列表常见操作
-
增:
- append() 把列表为一个单位添加
- extend() 把列表中的元素取出一个个添加
- insert() 指定位置添加(添加的为一个单位)
li1=["one","two",'a','b'] li2=['lucky','boy'] li1.append(li2) print(li1) #['one', 'two', 'a', 'b', ['lucky', 'boy']] li1.extend(li2) #['one', 'two', 'a', 'b', 'lucky', 'boy'] li1.insert(1,li2) #['one', ['lucky', 'boy'], 'two', 'a', 'b'] li1.extend(li2) li1[2:5]=["aa",'bb','cc'] #['one', 'two', 'aa', 'bb', 'cc', 'boy']
-
删:
-
pop()
- 如果不指定索引,默认删除最后一个
- 可删除指定索引对应的元素
li1=["one","two",'a','b'] li1.pop() li1.pop(1) print(li1) #['one', 'a']
-
remove()
-
删除第一个遇到的指定元素
-
无指定元素会报错
li1=["one","two",'a','b','a'] li1.remove('a') print(li1) #['one', 'two', 'b', 'a']
-
-
del
- 删除指定位置元素
li1=["one","two",'a','b','a'] del li1[2] print(li1) #['one', 'two', 'b', 'a']
-
clear()
- 清空
li1=["one","two",'a','b','a'] li1.clear() print(li1) #[]
-
-
查
- 索引
- 切片
7、遍历
- 元素遍历
li1=["one","two",'a','b','a']
for i in li1:
print(i,end=' ')
#one two a b a
- 索引遍历
li1=["one","two",'a','b','a']
for i in range(len(li1)):
print(li1[i], end=" ")
#one two a b a
- 枚举遍历
- enumerate(list,起始索引值) 同时获得索引值和元素
li1=["one","two",'a','b','a']
for i in enumerate(li1,2):
print(i, end=" ")
#(2, 'one') (3, 'two') (4, 'a') (5, 'b') (6, 'a')
li1=["one","two",'a','b','a']
for a,b in enumerate(li1[:2],2):
print(a,b)
#2 one 3 two
8、补充
- 堆和栈用列表可实现
- 计数count()
- 反转reverse()
li1=["one","two",'a','b','a']
li1.reverse()
print(li1)
#['a', 'b', 'a', 'two', 'one']
- 排序sort()
li1.sort()
#['a', 'a', 'b', 'one', 'two']
li1.sort(reverse=True)
#['two', 'one', 'b', 'a', 'a']
- 取两个列表的交集
li1 = ["a","b","c","d"]
li2 = ["c","d","e","f"]
tmp = [val for val in li1 if val in li2]
print(tmp)
#结果为:['c', 'd']
-
赋值与深浅拷贝
- 赋值是对对象的引用
la = [1,2,5,6,'a',['f','g','n','b']] lb = la print(lb) print(la is lb) print(id(la),id(lb)) la.append('fgsb') print(la) print(lb) #[1, 2, 5, 6, 'a', ['f', 'g', 'n', 'b']] #True #54365640 54365640 #[1, 2, 5, 6, 'a', ['f', 'g', 'n', 'b'], 'fgsb'] #[1, 2, 5, 6, 'a', ['f', 'g', 'n', 'b'], 'fgsb']
-
深浅拷贝
- 浅拷贝会创建新的对象,内容是原对象的引用,对于元素地址的拷贝只有第一层,当列表中的元素也存在列表时,即该列表的元素的地址就不知有一层了,当你修改第一层中的元素时,拷贝列表会跟随变化;当你修改到第二层中元素时,由于拷贝列表只拷贝了第一层,第二层元素改变时,拷贝列表不会改变
切片操作[:]
工厂函数list(li)
copy函数
la = [1,2,5,6,'a',['f','g','n','b']] lb = la.copy() print(lb) print(la is lb) print(id(la),id(lb)) la.append('fgsb') print(la) print(lb) #[1, 2, 5, 6, 'a', ['f', 'g', 'n', 'b']] #False #54300224 54858136 #[1, 2, 5, 6, 'a', ['f', 'g', 'n', 'b'], 'fgsb'] #[1, 2, 5, 6, 'a', ['f', 'g', 'n', 'b']]
- 强拷贝
import copy la = [1,2,5,6,'a',['f','g','n','b']] lb = la lc = copy.deepcopy(la) print(lb) print(lc) print(la is lb) print(la is lc) print(id(la),id(lb),id(lc)) la[5][2]='s' print(la) print(lb) print(lc) #[1, 2, 5, 6, 'a', ['f', 'g', 'n', 'b']] #[1, 2, 5, 6, 'a', ['f', 'g', 'n', 'b']] #True #False #52106744 52106744 52105944 #[1, 2, 5, 6, 'a', ['f', 'g', 's', 'b']] #[1, 2, 5, 6, 'a', ['f', 'g', 's', 'b']] #[1, 2, 5, 6, 'a', ['f', 'g', 'n', 'b']]
-
列表解析式
print([x for x in range(10)]) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print([x for x in range(10)if x%2 == 0]) #[0, 2, 4, 6, 8]
格式:[表达式 for 迭代元素 in 可迭代对象]
最后计算的表达式以一个列表返回
-
三目运算符
y = 10 x = y + 1 if y>10 else y-1 print(x) x = y + 1 if y>9 else y-1 print(x) #9 #11
2、元组
1、特点
- 有序
- 可重复
- 不可更改
2、元组的创建
- 空元组的创建
- 单元素元组的创建
tp = ()
tp1 = ("abc")
tp2 = ("abc",)
print(type(tp))
print(type(tp1))
print(type(tp2))
#<class 'tuple'>
#<class 'str'>
#<class 'tuple'>
- 多元素元组创建,可包含多种数据类型
3、拼接
4、重复
5、索引(偏移) 切片
tp = ("def",)
tp2 = ("abc","zucc")
tp1 = tp + tp2 #拼接
print(tp1)
print(tp*3) #重复
print(tp1[0])
print(tp1[0][1])
print(tp1[1:])
print(tp1[::-1])
#('def', 'abc', 'zucc')
#('def', 'def', 'def')
#def
#e
#('abc', 'zucc')
#('zucc', 'abc', 'def')
- index()函数可用于获取指定元素第一次出现的下标值
6、删除
不能删除某个元素,但可以删除整个元组,用del函数
7、最大最小值
max()、min()函数可获得元组中最大和最小的元素
8、遍历
- 元素遍历
- 索引遍历
- 枚举
大致与列表操作相同,差别不大,可向上参考
tp1 = ("def",)
tp2 = ("abc","zucc")
tp = tp1 + tp2
for i in tp1:
print(i)