Python学习日志——列表与元组

it2022-05-05  145

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)

最新回复(0)