列表定义:
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)
False
del语句:
作用:
删除变量
删除列表中的元素
删除单个元素:
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 list
L.insert(index, obj) # 将某个元素插入到列表中的指定位置
>>> l.insert(0,'lsk')
>>> l
['lsk', 1, 3, 5, 7, 9]
L.count(x) # 返回列表中元素的个数
>>> l.count(1)
1
L.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
True
L.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'