Python—列表list的基础知识

it2022-05-05  108

文章目录

列表特点:创建(1)拼接(2)重复(3)索引(偏移)[],切片[:],[::](4)列表的常见操作增查改删计数反转排序 sort() (5)赋值与深浅拷贝赋值深浅拷贝 列表解析式列表生成式带过滤功能格式

列表

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

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

特点:

是一个有序的可以重复的可变类型

创建

创建空列表 li=[] print(type(li)) 创建多元素列表 li=[1,2,3,"acc","city","college",["I","am"]] 强转 sr="ab" li=list(sr) print((li,type(li)))

(1)拼接

li1=["1"] li2=["x"] print(li1+li2)

(2)重复

print(li1*3)

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

li=['c','i','t','y','1','9','0','9'] print((li[0],li[5])) print(li[:5]) print(li[::-1]) print(li[2][0])

demo:

sr="城市学院" li=[] for i in sr: li.append(ord(i)) print(li)

(4)列表的常见操作

增删改查

append() 将这个整体放入extend() 每个元素取出再放入insert() 按照给的位置放入 li=['c','i','t','y','1','9','0','9'] li1=['a','b','c'] li2=[] li.append(li1) li2.extend(li1) li2.insert(1,li1) print(li2) print(li) def f(x, li=[]): for i in range(x): li.append(i*i) return li print(f(2)) print(f(3, [3, 2, 1])) print(f(3)) [0, 1] [3, 2, 1, 0, 1, 4] # 重新设定一个列表 [0, 1, 0, 1, 4] # 保留着f(2)的结果 li.append(x)不会改变地址

索引 切片

for循环遍历

元素遍历

li=['c','i','t','y','1','9','0','9'] for i in li: print(i)

索引遍历

for i in range(len(li)): print(li[i])

枚举遍历

enumerate() 对于一个可迭代的/可遍历的对象(如列表,字符串等),将其组成一个索引序列,利用它,我们可以同时获得索引和值 li=['c','i','t','y','1','9','0','9'] for i in enumerate(li,2): print(i,end=" ") for index,value in enumerate(li,2): print((index,value),end=' ') # (2, 'c') (3, 'i') (4, 't') (5, 'y') (6, '1') (7, '9') (8, '0') (9, '9')

li[x]="" li[x:y]=['a','b'.....]

直接改

pop() 返回删除的元素

如果不指定索引,默认删除最后一个元素删除索引指定元素 li=['c','i','t','y','1','9','0','9'] print(li.pop(2)) print(li)

remove() 不会返回值

移出第一次遇到的指定元素 li=['c','i','t','y','1','9','0','9'] li.remove('c') print(li)

del

如有指定,删除指定元素无指定,删除整个列表且删除列表定义 li=['c','i','t','y','1','9','0','9'] del li[5] print(li)

clear() 清空列表所有元素

li=['c','i','t','y','1','9','0','9'] li.clear() print(li)

计数

count() 查找元素出现的次数

反转

reverse()

li=['c','i','t','y','1','9','0','9'] li.reverse() print(li)

排序 sort()

按照ASCII码值排序

li=['c','i','t','y','1','9','0','9'] li.sort() print(li) li.sort(reverse=True) print(li)

(5)赋值与深浅拷贝

赋值

赋值是对对象的引用 la=[1,2,3,'s','d'] lb=la print(id(la),id(b2)) #2142053322504 2142053322504

深浅拷贝

深拷贝会创建新对象,内容是原对象的引用 (原元素集修改不会影响deepcopy的元素集)深拷贝拷贝对象的所有元素,包括多层嵌套的元素。因此,是开辟了一个新的内存储存区,和数据源没有关系

浅拷贝相当于只拷贝了一层,修改外层元素会修改引用,让它们指向另一个位置;修改嵌套列表的元素,列表地址没有发生变化,指向的还是同一个位置

import copy la=[1,2,3,['sss','d']] lb_copy=copy.copy(la) lb_deepcopy=copy.deepcopy(la) la[3][1]="aaa" print(la,lb_copy) print(la,lb_deepcopy) # [1, 2, 3, ['sss', 'aaa']] [1, 2, 3, ['sss', 'aaa']] # [1, 2, 3, ['sss', 'aaa']] [1, 2, 3, ['sss', 'd']]

三种实现方法

切片操作[:]工厂函数list(li)copy模块内的copy函数 (原元素集添加新元素不会影响copy的元素集) la=[1,2,3,'s','d'] lb=la lb2=la[:] print(id(la),id(lb2)) # 2142053322504 2142053438344 import copy lb_copy=copy.copy(la) print(id(la),id(lb_copy)) # 2397079326472 2397079495816

列表解析式

print([x for x in range(10) if x%2==0])

列表生成式

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

sr='aaaa' print([ord(x) for x in sr])

格式:

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

实现原理:

迭代[可迭代对象]中的每一个元素每迭代一次的结果赋值给对应的迭代元素,再通过表达式运算得到一个新的值最后所有通过表达式计算的值以一个列表的形式返回 y=13 x= (y+1 if y>10 else y-1) print(x) # 14 y=10 x= (y+1 if y>10 else y-1) print(x) # 9 # 中间为判断条件,前后位赋值语句

带过滤功能格式

[表达式 for 迭代元素 in 可迭代对象 if if条件语句] li=[] for 迭代元素 可迭代对象: if iif条件语句: li.append((迭代元素)) print(li)

demo:

name=["a","b","c"] subject=['a','b','c','d'] 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]) # [['a', 'a'], ['a', 'b'], ['a', 'c'], ['a', 'd'], ['b', 'a'], ['b', 'b'], ['b', 'c'], ['b', 'd'], ['c', 'a'], ['c', 'b'], ['c', 'c'], ['c', 'd']]

最新回复(0)