一、列表类型的生成和类型转换
列表类型是通过list()这个功能实现的。也就是说只要产生一个列表,底层一定调用了list()。 同样的list()还可以实现其他类型到列表类型的转换,它可以把可迭代对象转换为列表。
>>> list("hello")
['h', 'e', 'l', 'l', 'o']
>>> list({"a":1, "b":2})
['a', 'b']
二、列表的内置方法
同字符串一样,列表也内置了多种方法。
2.1、索引取值
列表是按顺序排列的,所以它支持按索引取值。
>>> l = ['a', 'b', 'c']
>>> l[1]
'b'
>>> l[-1]
'c'
>>> l[2] = 'd'
>>> l
['a', 'b', 'd']
>>> l[3] = 'e'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
从实例可以看出,列表一样一直正向索引取值和负向索引取值。和字符串不同的是,列表属于可变类型,可以根据索引改值。但是不存在的索引不能通过这种方式添加。
2.2、列表追加
给列表添加新的值可以使用列表追加的功能。通过append()函数实现。注意:列表追加只会在末尾追加值。
>>> l = ['a', 'b', 'c']
>>> l.append(4)
>>> l
['a', 'b', 'c', 4]
2.3、列表插入
如果需要再列表的中间插入数据,就需要用到insert()功能。它接受两个参数,第一个是要插入的位置,第二个是元素值。
>>> l = ['a', 'b', 'c']
>>> l.insert(1, 2)
>>> l
['a', 2, 'b', 'c']
>>> l.insert(0, 0)
>>> l
[0, 'a', 2, 'b', 'c']
如果l写一个很大的数,超过了当前列表的长度,它会默认插到末尾。
2.4、列表扩展
列表扩展是将两个列表合并为1个列表。用extend()函数实现。
>>> l = ['a', 'b', 'c']
>>> l1 = [1, 2, '3']
>>> l + l1
['a', 'b', 'c', 1, 2, '3']
>>> l.extend(l1)
>>> l
['a', 'b', 'c', 1, 2, '3']
extend()接受的参数是可迭代对象,因此字符串,字典等也可以扩展到列表中。列表也是支持+号的,它会生成一个新列表,不改变两个原列表的值。
2.5、列表删除值
前面我们学过,可以使用del删除一个值,它的本质是解除变量和值的引用关系。但是达到的效果就是删除。
>>> l = ['a', 'b', 'c']
>>> del l[1]
>>> l
['a', 'c']
del可以删除列表的元素,但是del不是列表自身的功能,而且也没有返回值。列表自身提供了pop()函数实现删除功能。pop()会删除指定索引位置的元素,默认删除最后一个元素,
>>> l = ['a', 'b', 'c']
>>> res = l.pop()
>>> print(res, l)
c ['a', 'b']
>>> res = l.pop(0)
>>> print(res, l)
a ['b']
删除列表还有第三种方式,就是remove()。remove()是根据元素值来删除,是没有返回值的。
>>> l = ['a', 'b', 'c']
>>> l.remove('a')
>>> l
['b', 'c']
2.6、切片
列表的切片和字符串是一样的,步长step默认为1,begin不写默认从0开始,end不写默认到末尾结束。如果步长为正数,则end必须大于begin。步长如果为负数,则end必须小于begin。整体遵循左闭右开原则。
>>> l = ['a', 'b', 'c', 'd']
>>> l[0:2]
['a', 'b']
列表切片一样支持反向切片和指定步长,这里我们就不再一一演示了。另外需要注意的是:切片不是剪切,而是对原来列表的拷贝,这里的拷贝是浅拷贝。
2.7、获取长度len
python提供了内置函数len()可以用来列表元素的个数。
>>> l = ['a', 'b', 'c', 'd']
>>> len(l)
4
2.8、成员运算
成员运算包含in和not in。用于判断一个值是否在列表里面。
>>> l = ['a', 'b', 'c', 'd']
>>> 'a' in l
True
>>> 'e' not in l
True
2.9、循环遍历
列表也属于可迭代对象,支持for循环。需要注意的是,不能在遍历列表是,在循环体内对列表进行修改。
l = ['a', 'b', 'c', 'd']
for i in l:
print(i)
2.10、其他常用操作汇总
1、统计元素出现的次数 count
>>> l = ['a', 'b', 'c', 'a', 'a']
>>> l.count('a')
3
2、查找某个元素的索引 index
>>> l = ['a', 'b', 'c', 'a', 'a']
>>> l.index('a')
0
如果元素存在多次,则默认从左往右找,返回第一个的位置。
3、清空元素 clear
>>> l = ['a', 'b', 'c', 'a', 'a']
>>> l.clear()
>>> l
[]
4、列表翻转 reverse
>>> l = ['a', 'b', 'c', 'd']
>>> l[::-1]
['d', 'c', 'b', 'a']
>>> l.reverse()
>>> l
['d', 'c', 'b', 'a']
切片一样也可以实现列表翻转,不同的是,切片是产生一个新列表不改变原列表。但是reverse()是将原列表进行翻转。
5、列表排序 sort
>>> l = [33, 43, 12, 9]
>>> l.sort()
>>> l
[9, 12, 33, 43]
>>> l.sort(reverse=True)
>>> l
[43, 33, 12, 9
默认是按照升序排序。如果降序需要加上关键字参数reverse=True。如果列表加入字符串元素再排序就会报错,因为数字和字符串不能比大小。sort只能对同一类型的元素进行排序,例如对字符串排序是按照ascii表比大小。
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付
