定义:用[ ] 括起来
特点: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
=>[‘p’, ‘y’, [‘hello’, ‘you’], ‘t’, ‘h’, ‘o’, ‘n’]
=> [‘p’, ‘y’, ‘t’, ‘h’, ‘o’]
索引、切片
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’)
reverse()
li = ['a','b','c','d'] li.reverse() print(li)[‘d’, ‘c’, ‘b’, ‘a’]
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’]
是对对象的引用
会创建新对象,内容是原对象的引用,
只拷贝一层地址,修改外层元素,会修改引用,让它们指向另一个位置;
修改嵌套列表的元素,列表地址没有发生变化,指向的还是同一个位置
三种实现方法:
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]]
格式:[表达式 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’,)
0
tp = ('a','b','c',[1,2,3]) print(tp[3].index(1))0
不能删除某个元素,但可以全部删除
