列表是用于存储任意数目、任意类型的数据集合。
1. 列表是内置可变序列,是包含多个元素的有序连续的内存空间。列表定义的标准语法格式: a = [10,20,30,40] ,其中,10,20,30,40 这些称为:列表 a 的元素。2. 列表中的元素可以各不相同,可以是任意类型。比如: a = [10,20,'abc',True]3. 列表用 '[]' 表示, 使用 list()可以将任何可迭代的数据转化成列表。4. range(start, end, step)可以用于创建整数列表。
列表生成式 (常用于填充指定值的列表)
[元素 for循环 if语句(可省略)]
e.g.
x = [int(input()) for i in range(4)] print(x) #读取四个用户输入的整数并按列表打印
常用的列表方法
1. append()方法,在列表尾部添加新的元素
2. ”+“,拼接操作,新创建一个列表对象,但效率降低
e.g. a = [20, 30]+[True]
3. extend(list),拼接操作,在原地修改
4. insert(idx, obj),使用 insert()方法可以将指定的元素插入到列表对象的任意制定位置。这样会让插入位置后面所有的元素进行移动,会影响处理速度
5. 元素的删除(本质是数组拷贝):
del语句,del a[1]
pop(idx)函数, pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素。
remove(obj)函数,删除首次出现的指定元素,若不存在该元素抛出异常。
6. 元素的访问可以用索引;也可以用index(obj, start, end)返回列表中制定区间内首次出现开元素的下标,如果不存在则抛出异常。
7. count()可以返回指定元素在列表中出现的次数,len()返回列表长度
8. "in"和切片用法同字符串
9. 列表排序:
list.sort():修改原列表,不建新列表的排序,默认升序,reverse = True则是降序
sorted(list):返回新列表,不对原列表做修改,key参数可以制定排序方法,可用lambda表达式。
补充:sorted()函数用法
sorted() 作为 Python 内置函数之一,其功能是对序列(列表、元组、字典、集合、还包括字符串)进行排序。其中key参数常与字典连用,制定排序的方法。
sorted()函数的基本语法如下:
list = sorted(iterable, key=None, reverse=False)
10. reverse() 也支持进行逆序排列,与列表对象 reverse()方法不同的是,内置函数
reversed()不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。a = [10, 2, 3, 42, 34] c = reversed(a) print(c) #<list_reverseiterator object at 0x00000255C03075F8> print(list(c)) #[34, 42, 3, 2, 10] print(list(c)) #[] 因为迭代对象 在第一次时已经遍历结束了,第二次不能再使用。
11. max(obj), min(obj), sum(obj) 传入可迭代对象
元组
元组属于不可变序列,不能修改元组中的元素。因此,元组没有增加元素、修改元素、删除元素相关的方法。1. 创建元组可以使用小括号或者tuple()方法创建元组。tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。list()可以接收元组、字符串、其他序列类型、迭代器等生成列表。2. 元组的排序使用内置函数sorted(tuple),生成有序列表,再转换成新的元组a = (10, 2, 3, 42, 34) b = tuple(sorted(a)) print(b)
3. zip(列表 1,列表 2,...)将多个列表对应位置的元素组合成为元组,并返回这个 zip 对象。
a = [10,20,30] b = [40,50,60] c = [70,80,90] d = zip(a,b,c) print(d) #<zip object at 0x000002AA9B430108> print(list(d)) #[(10, 40, 70), (20, 50, 80), (30, 60, 90)]
生成器推导式
从形式上看,生成器推导式与列表推导式类似,只是生成器推导式使用小括号。列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是一个生成器对象。我们可以通过生成器对象,转化成列表或者元组。也可以使用生成器对象的__next__()方法进行遍历,或者直接作为迭代器对象来使用。不管什么方式使用,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象。