列表;元组

it2022-05-05  138

列表

定义:用[ ] 括起来

特点:1.是一个有序的 2.可以重复 3.可变类型

1.拼接

2.重复

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

翻转

sr = 'python' print(sr[::-1])

=> [‘nohtyp’]

a = 'python' print(a[:2:-1]) #print(a[:2:-1]) 等价于print(a[-1:2:-1])

=>noh

4.列表的常见操作

1.增删改查

1.增

函数名描述append()extend()insert()按照索引添加 li = ['p','y','t','h','o','n'] li1 = ['hello','you'] li.insert(2,li1) print(li)

=>[‘p’, ‘y’, [‘hello’, ‘you’], ‘t’, ‘h’, ‘o’, ‘n’]

2删除

函数名描述pop()如果不指定索引,默认删除最后一个,并返回删除的元素remove()删除第一次遇到的指定元素del全部删除clear()清空 li = ['p','y','t','h','o','n'] del li[5] print(li)

=> [‘p’, ‘y’, ‘t’, ‘h’, ‘o’]

3.查

索引、切片

遍历

1.元素遍历

用i遍历序列里的元素

2.索引遍历

先获取下标,再进行索引

3.枚举遍历

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

li = ['a','b','c'] for i in enumerate(li,2): #2表示下标从2开始 print(i)

(2, ‘a’) (3, ‘b’) (4, ‘c’)

2.反转

reverse()

li = ['a','b','c','d'] li.reverse() print(li)

[‘d’, ‘c’, ‘b’, ‘a’]

3.排序

sort()

按照ACSII排序

li = ['b','a','d','c'] li.sort() print(li)

[‘a’, ‘b’, ‘c’, ‘d’]

li = ['b','a','d','c'] li.sort(reverse = True) print(li)

[‘d’, ‘c’, ‘b’, ‘a’]

4.赋值与深浅拷贝

赋值

是对对象的引用

深浅拷贝

浅拷贝

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

只拷贝一层地址,修改外层元素,会修改引用,让它们指向另一个位置;

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

三种实现方法:

1.切片操作[:]

la = [1,2,3,4,'a',['b1','b2']] lb = la lb1 = la[:] print(id(la),id(lb1))

​ =>不同id

2.工厂函数list(li)

3.copy模块内的copy函数

import copy tp = [1,2,3,[4,5]] tp_copy = copy.copy(tp) tp[0]=6 print(tp) print(tp_copy)

[6, 2, 3, [4, 5]] [1, 2, 3, [4, 5]]

import copy tp = [1,2,3,[4,5]] tp_copy = copy.copy(tp) tp[3][0]=6 print(tp) print(tp_copy)

[1, 2, 3, [6, 5]] [1, 2, 3, [6, 5]]

深拷贝

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

import copy tp = [1,2,3,[4,5]] tp_deepcopy = copy.deepcopy(tp) tp[0]=6 print(tp) print(tp_deepcopy)

[6, 2, 3, [4, 5]] [1, 2, 3, [4, 5]]

import copy tp = [1,2,3,[4,5]] tp_deepcopy = copy.deepcopy(tp) tp[3][0]=6 print(tp) print(tp_deepcopy)

[1, 2, 3, [6, 5]] [1, 2, 3, [4, 5]]

5.列表解析式

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

实现原理:迭代【可迭代对象】中的每一个元素,每迭代一次的结果赋值给对应的迭代元素,再通过表达式运算得到一个新的值,最后所有通过表达式计算的值以一个列表形式返回

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] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

三目运算

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

13

带过滤功能格式

[exp for iter_val in iter if if_condition]

元组

有序、可重复、不可更改

单元素元组:需要在单元素后面加逗号 tp=(‘a’,)

tp = ('a','b','c') print(tp.index('a'))

0

tp = ('a','b','c',[1,2,3]) print(tp[3].index(1))

0

不能删除某个元素,但可以全部删除


最新回复(0)