列表定义:
1.列表中由一系列特定元素组成,元素与元素之间可能没有任何关联关系,但他们之间有先后顺序关系。
2.列表是一种序列
3.列表可以改变存储的各个元素
4.列表是一种容器
列表的构造函数:
list() 生成一个空列表,等同于[]
list(iterable) 用可迭代对象初始一个列表
列表的运算:
算术运算符:
+ += * *=
+ 拼接列表
>>> list2 = [4,5,6] >>> list1 + list2 [1, 2, 3, 4, 5, 6]+= 原列表与右侧列表拼接后变量绑定新列表
>>> list1 += list2 >>> list1 [1, 2, 3, 4, 5, 6]* 生成重复的列表
>>> list1 *3 [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6] >>> 3* list1 [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]*= y用原列表生成重复的列表,用变量绑定新生成的列表
>>> list1 *= 2 >>> list1 [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]列表的in / not in 运算符:
判断一个值是否存在列表中,如果存在则返回True,否则返回False
>>> l = ['1213', 'LSK', 'Lsk', ''] >>> 'lsk' in l False >>> 'Lsk' in l True列表的索引:
语法:
列表[整数表达式]
例:
>>> l = ['1213', 'LSK', 'Lsk', ''] >>> l[2] 'Lsk' >>> l[2:] ['Lsk', ''] >>> l[::-1] ['', 'Lsk', 'LSK', '1213']列表是可变的序列,可以通过索引赋值来改变列表元素:
>>> l[1] = 'haha' >>> l ['1213', 'haha', 'Lsk', '']常用的序列函数:
len(leq) # 返回序列长度
max(seq) # 返回序列的最大值元素
min(seq) # 返回序列的最小值元素
sum(seq) # 返回序列中所有元素的和
any(seq) # 真值测试,如果序列中其中一个值为True则返回True,否则返回False
all(seq) # 真值测试,如果序列中所有值为True则返回True,否则返回False
例:
>>> l = [1,2,''] >>> any(l) True >>> all(l) Falsedel语句:
作用:
删除变量
删除列表中的元素
删除单个元素:
del 列表[整数索引]
用切片删除单个或多个元素
del 列表[::]
例:
>>> l [1, 2, ''] >>> del l >>> l Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'l' is not defined >>> l = [1, 2, 3, 4, 5] >>> del l[1] >>> l [1, 3, 4, 5] >>> del l[0:2] >>> l [4, 5]常用的列表方法:
L.index(value[, begin[, end]]) #返回对应元素的下标,begin为开始索引,end为结束索引
>>> l = list(range(1,10,2)) >>> l.index(3) 1 >>> l.index(3,2,4) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: 3 is not in listL.insert(index, obj) # 将某个元素插入到列表中的指定位置
>>> l.insert(0,'lsk') >>> l ['lsk', 1, 3, 5, 7, 9]L.count(x) # 返回列表中元素的个数
>>> l.count(1) 1L.remove(x) # 从列表中删除第一次出现在列表中的值
>>> l ['lsk', 1, 3, 5, 7, 9] >>> l.remove(3) >>> l ['lsk', 1, 5, 7, 9]L.copy() # 复制此列表(只复制一层 ,不会复制深层对象),等同于l2 = l1[:],浅拷贝
>>> l2 = l.copy() >>> l2 is l False >>> l2 == l TrueL.append(x) # 在列表中追加单个元素
>>> l ['lsk', 1, 5, 7, 9] >>> l.append('haha') >>> l ['lsk', 1, 5, 7, 9, 'haha']L.extend(lst) # 向列表追加另一个列表
>>> l ['lsk', 1, 5, 7, 9, 'haha'] >>> l.extend([1,2,3]) >>> l ['lsk', 1, 5, 7, 9, 'haha', 1, 2, 3]L.clear() 清空列表,等同于del l[:]
>>> l.clear() >>> l []L.sort(reverse=False) # 将列表的顺序按值的从小到大的顺序进行排列
>>> l = [5, 3, 1, 7, 2, 4, 9, 6] >>> l.sort() >>> l [1, 2, 3, 4, 5, 6, 7, 9]L.reverse() # 列表反转
>>> l.reverse() >>> l [9, 7, 6, 5, 4, 3, 2, 1]L.pop([index]) # 删除索引对应的元素,如果不加索引,默认删除最后一个元素,同时返回移除元素。
>>> l [9, 7, 6, 5, 4, 3, 2, 1] >>> l.pop(-1) 1 >>> l [9, 7, 6, 5, 4, 3, 2]列表推导式:
列表推导式是用可迭代对象依次生成列表内元素的方式。
列表推导式是表达式
语法:
[表达式 for 变量 in 可迭代对象]
或
[表达式 for 变量 in 可迭代对象 if 条件]
说明:
1.先从可迭代对象取一个值,用变量绑定。
2.调用表达式,把当前的表达式结果追加到列表中
3.重复上述步骤,直到可迭代对象不再提供数据为止
4.for in 表达式的if子句可以省略,省略后将对所有生成的对象进行处理
5.如果if条件语句的真值测试为False,则可迭代对象生成的数据将被丢弃
例:
# 生成一个1~9平方的列表 >>> [x**2 for x in range(1,10)] [1, 4, 9, 16, 25, 36, 49, 64, 81] # 生成奇数列表 >>> [x for x in range(20) if x % 2 == 1] [1, 3, 5, 7, 9, 11, 13, 15, 17, 19] >>> [x for x in range(1, 20, 2)] [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]列表推导式嵌套:
语法:
[表达式1
for 变量1 in 可迭代对象1
for 变量2 in 可迭代对象2(if 真值表达式2)
]
例:
>>> s1 = 'lsk' >>> s2 = 'LSK' >>> [y+x for x in s1 for y in s2] ['Ll', 'Sl', 'Kl', 'Ls', 'Ss', 'Ks', 'Lk', 'Sk', 'Kk'] 用列表推导式生成:[[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> [[x, x+1, x+2] for x in range(1, 8, 3)] [[1, 2, 3], [4, 5, 6], [7, 8, 9]]字符串文本解析方法:
S.split(sep=None) # 用sep字符将字符串分隔,返回关于字符串的列表
S.join(iterable) # 将一个可迭代对象用字符S进行拼接,生成新的字符串
例:
>>> s = 'lsk,LSK,Lsk' >>> s.split(',') ['lsk', 'LSK', 'Lsk'] >>> l = ['lsk', 'Lsk', 'LSK'] >>> s = '--->'.join(l) >>> s 'lsk--->Lsk--->LSK'