day3列表元组

it2022-05-05  142

文章目录

列表数组创建空列表创建多元素列表强转拼接重复索引(偏移) [] ,切片 [:],[:]列表的常见操作1.增2.改3.删4.查 遍历赋值 元组1.查2.增 不能3.改 不能4.删

列表

列表使用方括号括起来的[],每个元素以逗号分割;

可以存储不同的数据类型数据

数组

特点:

是一个有序的

可以重复的

可变类型

创建空列表

li = []

创建多元素列表

li = [1, 2, 3, "HangZhou", "City", "College", ['I', 'Love', 'Python']]

强转

sr = 'abcd' li = list(sr) print(li,type(li))

拼接

li1 = ['I'] li2 = ['Love', 'Python'] print(li1 + li2) #['I', 'Love', 'Python']

重复

print(li1 *3 )

索引(偏移) [] ,切片 [:],[:]

li = ['C', 'i', 't', 'y', 'City', 'College', ['City', 'College']] print(len(li)) # 7 print(li[0], li[-7]) # C C print(li[:5]) # ['C', 'i', 't', 'y', 'City'] print(li[::-1]) # [['City', 'College'], 'College', 'City', 'y', 't', 'i', 'C'] print(li[4][1]) # i print(li[6][1]) # College

列表的常见操作

1.增

.append() # li = ['City', 'College'] print(id(li)) #1510909945864 li1 = ['a', 'b', 'c'] li.append(li1) print(li, id(li)) #['City', 'College', ['a', 'b', 'c']] 1510909945864 sr = '城市学院' li2 = [] for i in sr: li2.append(ord(i)) print(li2) #[22478, 24066, 23398, 38498] .insert() #按索引添加 li = ['City', 'College'] li1 = ['a', 'b', 'c'] li.insert(1,li1) print(li) #['City', ['a', 'b', 'c'], 'College'] .extend() # li = ['City', 'College'] li1 = ['a', 'b', 'c'] li.extend(li1) print(li) #['City', 'College', 'a', 'b', 'c']

2.改

li = ['City', 'College'] li1 = ['a', 'b', 'c'] li.insert(1,li1) print(li) #['City', ['a', 'b', 'c'], 'College'] li[2] = '666' print(li) #['City', ['a', 'b', 'c'], '666'] li[2:5] = ['x', 'y', 'z'] print(li) #['City', ['a', 'b', 'c'], 'x', 'y', 'z']

3.删

.pop() #返回被删除的元素 #如果不指定索引,默认删除最后一个元素 #删除指定索引对应的元素 li = ['a', 'b', 'c', 'd', 'e'] print(li.pop(2)) # c print(li) # ['a', 'b', 'd', 'e'] .remove() #移除第一次遇到的指定元素 li = ['a', 'b', 'c', 'd', 'e', 'city', 'e'] print(li.remove('e')) #None 没有返回值 print(li) #['a', 'b', 'c', 'd', 'city', 'e'] -del li = ['a', 'b', 'c', 'd', 'e', 'city', 'e'] del li[5] print(li) #['a', 'b', 'c', 'd', 'e', 'e'] .clear() li = ['a', 'b', 'c', 'd', 'e', 'city', 'e'] li.clear() print(li) #[] 清空列表

4.查 遍历

元素遍历 li=["a","b","c"] for i in li: print(i) #a #b #c 索引遍历 li=["a","b","c"] for i in range(len(li)): print(li[i]) #a #b #c 枚举遍历 .enumerete() #对于一个可迭代的/可遍历的对象(如列表,字符串等) #将其组成一个索引序列,利用它,我们可以同时获得索引和值 li = ['a', 'b', 'c'] for i in enumerate(li,2): print(i) (2, 'a') (3, 'b') (4, 'c') 堆和栈,用列表实现其他操作 .count()#计数,查找元素出现的次数 .reverse()#反转 .sort()#排序,按照ascii排序

1.input()函数实现往空列表中添加元素,当输入"q"的时候,结束输入,并返回列表

li = [] ele = input('请输入元素') li.append(ele) while 'q' not in ele: ele = input('请输入元素') li.append(ele) else: print(li) li = [] while True: inp = input('请输入列表元素: \t') if inp == 'q': break else: li.append(inp) print(li)

2.随机生成30个0-10的随机整数,并统计每个数出现的次数,返回的结果形式为[[0, 3], [1, 4], … , [10, 5]]

import random li = [] li2 = [] for i in range(30): li.append(random.randint(0,10)) print(li) sum = 0 for i in range(0,11): li2.append([i,li.count(i)]) sum += li.count(i) print(li2) print(sum)

赋值

赋值是对对象的引用

la = [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] lb = la print(la) # [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] print(lb) # [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] print(id(la),id(lb)) # 2039160711048 2039160711048 print(la is lb) # True la[5] = 'aaa' print(la) # [1, 2, 3, 4, 5, 'aaa', ['b1', 'b2']] print(lb) # [1, 2, 3, 4, 5, 'aaa', ['b1', 'b2']]

深浅拷贝

深拷贝会创建新对象,内容是原对象的引用

三种实现方法:

切面操作[:]工厂函数list (li)copy模块内的copy函数 la = [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] lb = la lb2 = la[:] print(lb2) # [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] print(id(la), id(lb2)) # 2115390023688 2115419799240 import copy lb_copy = copy.copy(la) print(lb_copy) # [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] print(id(la), id(lb_copy)) # 2115390023688 2115421295944 la.append('test') #添加原子类型不会影响lb_copy print(la) # [1, 2, 3, 4, 5, 'a', ['b1', 'b2'], 'test'] print(lb_copy) # [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] import copy la = [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] lb_copy = copy.copy(la) la[6][0] = 'bbb' print(la) # [1, 2, 3, 4, 5, 'a', ['bbb', 'b2']] print(lb_copy) # [1, 2, 3, 4, 5, 'a', ['bbb', 'b2']] import copy la = [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] lb_copy = copy.copy(la) la[6] = 'bbb' print(la) # [1, 2, 3, 4, 5, 'a', 'bbb'] print(lb_copy) # [1, 2, 3, 4, 5, 'a', ['b1', 'b2']]

深拷贝

import copy la = [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] lb_deepcopy = copy.deepcopy(la) print(la, id(la)) [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2450386351624 print(lb_deepcopy, id(lb_deepcopy)) [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] 2450386352904 la[5] = 'aaa' print(la) # [1, 2, 3, 4, 5, 'aaa', ['b1', 'b2']] print(lb_deepcopy) # [1, 2, 3, 4, 5, 'a', ['b1', 'b2']] la[6][1] = 'bbb' print(la) # [1, 2, 3, 4, 5, 'a', ['b1', 'bbb']] print(lb_deepcopy) # [1, 2, 3, 4, 5, 'a', ['b1', 'b2']]

浅拷贝相当于我们只拷贝了一层,修改外层元素,会修改引用,让他们指向另一个位置;

修改嵌套列表的元素,列表地址没有发生变化,只想的还是同一个位置

深拷贝拷贝对象的所有元素,包括多层嵌套的元素。因此,是开辟了一个新的内存存储区,和数据源没有关系了

列表解析式

li = [] for x in range(10): li.append(x) print(li) 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]

列表生成式,用来生成列表的特定的语法形式

sr = "城市学院" print([ord(x) for x in sr]) #[22478, 24066, 23398, 38498] print([x for x in sr]) #['城', '市', '学', '院']

格式: [表达式 for 迭代元素 in 可迭代对象]

实现原理:

迭代[可迭代对象]中的每一个元素每迭代一次的结果赋值给对应的迭代元素,在通过表达式运算得到一个新的值最后所有通过表达式计算的值以一个列表的形式返回

三目运算符

y = 10 x = y + 1 if y>10 else y-1 print(x) #9

带过滤功能格式

[exp for iter_val in iter if_condtion] li = [] for iter_val in iter: if if_condtion: #判断条件 li.append(iter_val) print(li) name = ['Tom', 'Jack', 'Luck'] subject = ['Python', 'Java', 'C', 'C++'] li = [] for i in name: for j in subject: li.append([i, j]) print(li) print([[i, j] for i in name for j in subject]) #[['Tom', 'Python'], ['Tom', 'Java'], ['Tom', 'C'], ['Tom', 'C++'], ['Jack', 'Python'], ['Jack', 'Java'], ['Jack', 'C'], ['Jack', 'C++'], ['Luck', 'Python'], ['Luck', 'Java'], ['Luck', 'C'], ['Luck', 'C++']]

元组

1.有序

2.可重复

3.不可更改

符号使用括号()

定义:

元组的创建

空元组的创建单元组的创建 tp = (“abc”, )多元素元组的创建,包含多种数据类型多元素元组的创建,包含多种数据类型 拼接重复索引(偏移) 切片

1.查

索引查切片查index() tp = (1, 2, 3, 'a', 'b', ['aa', 'bb', 'cc', 'dd']) print(tp.index('a')) #3

2.增 不能

3.改 不能

4.删

不能删除某个元素;但可以将整个元组删除

del tp

最大值、最小值

print(max(tp),min(tp))

遍历

元素遍历

索引遍历

枚举enumerate


最新回复(0)