列表用于存储任一数目,任一类型的数据集合
列表是内置可变序列,是包含多个元素的有序连续的内存空间。列表定义标准格式a=[10,20,30,40]
其中,10,20,30,40这些成为:列表a的元素
列表中的元素可以不相同,可以任意类型。例如:a=[10,20.2,’abc’,’True’]
列表方法:增加元素、删除元素、访问元素、计数元素、统计元素等
注意:JAVA列表不可变
字符串和列表都是序列类型,一个字符串是一个字符序列,一个列表是任何元素的序列
>>> a = [20,30,40,'abc'] >>> a[0] 20 >>> a = [] #创建一个空的列表对象 >>> a.append(20) >>> a [20] >>> |
List()可以将任何可迭代的数据转换成列表
>>> a = list() 创建空列表对象 >>> a = list(range(10)) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a = list("spy.txt") >>> a ['s', 'p', 'y', '.', 't', 'x', 't'] >>> |
Range(start,end,step)
>>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(2,10,2)) [2, 4, 6, 8] >>> list(range(2,-10,-2)) [2, 0, -2, -4, -6, -8] >>> |
>>> a = [x*2 for x in range(5)] >>> a [0, 2, 4, 6, 8] >>> a = [x*2 for x in range(100) if x%9 == 0] >>> a [0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198] >>> |
当列表增加和删除元素时,列表会自动进行内存管理,大大减少了程序员的负担,但这个特点涉及列表元素的大量移动,效率极低。除非必要,我们一般只在列表尾部添加元素和删除元素,这会大大提高列表的操作效率
并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素一次复制到新的列表对象中。这样,会涉及大量的复制操作,对操作大量元素不建议使用
将目标列表的所有元素添加到本列表的尾部,原地址操作,不创建新的列表对象
使用insert()方法可以将制定的元素插入到列表列表对象的任意制定位置。这样会让插入位置后面的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。类似发生这样移动的函数还有:remove()/pop()/del(),他们在删除非尾部元素时也会发生操作位置后面元素的移动
>>> a=[20,40] >>> a.append(50) >>> a [20, 40, 50] >>> id(a) 2503763485896 >>> a = a+[60] >>> a [20, 40, 50, 60] >>> id(a) 2503763485256 >>> >>> a [20, 40, 50, 60] >>> id(a) 2503763485256 >>> a.extend([70,80]) >>> a [20, 40, 50, 60, 70, 80] >>> id(a) 2503763485256 >>> >>> a.insert(2,55) >>> a [20, 40, 55, 50, 60, 70, 80] >>> id(a) 2503763485256 >>> |
使用乘法扩展列表,生成一个新的列表,新列表元素是原列表元素的多次重复
>>> a='sxt'*3 >>> a 'sxtsxtsxt' >>> a=[20,30]*3 >>> a [20, 30, 20, 30, 20, 30] >>> |
删除的原理实质是数组元素的copy,
删除列表指定位置的元素
Pop()删除并返回指定位置的元素,未指定位置删除最后一个元素
删除首次出现的指定元素,若不存在该元素抛出异常
>>> a = [10,20] >>> del a[1] >>> a [10] >>> del a >>> a >>> a = [10,20,30,40,50] >>> a.pop() 50 >>> a [10, 20, 30, 40] >>> a.pop(1) 20 >>> a [10, 30, 40] >>> >>> a = [10,20,30,20,20] >>> a.remove(20) >>> a [10, 30, 20, 20] >>> a.remove(100) Traceback (most recent call last): File " a.remove(100) ValueError: list.remove(x): x not in list >>> >>> a = ['a','spy','b','spy','spy'] >>> a.remove('spy') >>> a ['a', 'b', 'spy', 'spy'] >>> a.remove(20) Traceback (most recent call last): File " a.remove(20) ValueError: list.remove(x): x not in list >>> |