列表是有序的,可变序列
1,列表是包含若干个元素的有序连续内存空间,当列表增加或删除元素时,列表对象自动进行内存的扩展或收缩,从而保证相邻元素之间没有缝隙。但插入和删除非尾部元素时会改变该位置后面的元素在列表中的索引,这对于某些操作可能会导致意外的错误结果。因此,除非确实有必要,否则应尽量从列表的尾部进行元素的追加与删除。
2,同一个列表中元素的数据类型可以各部相同,可以包含整数,浮点数,字符串,列表,元组,字典,集合,函数等。python采用基于值的自动内存管理模式,变量并不直接存储值,而是存储值的引用或内存地址,这也是python中变量可以随时改变类型的重要原因。
3,索引和切片,算头不算尾。
4,列表对象常用的方法
append(),extend(),insert()
In [26]: list((1,2,3,)) Out[26]: [1, 2, 3] In [27]: list(range(9,1,-1)) Out[27]: [9, 8, 7, 6, 5, 4, 3, 2] In [28]: list('apple') Out[28]: ['a', 'p', 'p', 'l', 'e'] In [29]: list({'apple':"$12.00",'orange':'$13.14'}) Out[29]: ['apple', 'orange'] In [30]: list({'apple':"$12.00",'orange':'$13.14'}.items()) Out[30]: [('apple', '$12.00'), ('orange', '$13.14')]
In [31]: x=[123] 列表的内存地址不变 append()尾部追加一个元素,extend()尾部追加另一个列表中的元素,insert()在列表任意位置插入一个元素。
In [32]: id(x)
Out[32]: 1329149867720
In [33]: x.append(4)
In [34]: id(x)
Out[34]: 1329149867720
In [35]: x.extend([567])
In [37]: id(x)
Out[37]: 1329149867720
In [38]: print(x)
[123, 4, 567]
In [39]: x.insert(1,'zzz')
In [40]: id(x)
Out[40]: 1329149867720
In [41]: print(x)
[123, 'zzz', 4, 567]
In [42]: x=[1,2,3,4,5,6] In [43]: x.pop() 默认弹出最后一个元素,返回最后一个元素 Out[43]: 6 In [44]: print(x) 新列表删出了6 [1, 2, 3, 4, 5] In [45]: x.pop(2) 指定位置 Out[45]: 3 In [46]: print(x) [1, 2, 4, 5]
上面是pop()的删除,下面是remove()的删除,clear()的删除
In [50]: x=[1,1,2,3,4,4,5] In [52]: x.remove(4) In [53]: print(x) 只删除第一个值与指定值相等的元素 [1, 1, 2, 3, 4, 5]
In [54]: x.clear() 清空为一个空列表
In [55]: print(x)
[]
count()计数,index()查看索引
sort()函数和reverse()函数
列表对象的sort()和reverse()分别对列表进行原地排序和逆序,没有返回值。所谓‘原地’,意思是用处理后的数据替换原来的数据,列表首地址不变,列表中元素原来的顺序全部丢失。
用内置函数sorted()返回排序后的新列表。 reversed(),返回一个逆序后的reversed对象。
In [77]: x=[1,3,5,7,9,6,4,2] In [78]: x.sort() In [79]: print(x) [1, 2, 3, 4, 5, 6, 7, 9] In [80]: x.sort(reverse=True) In [81]: print(x) [9, 7, 6, 5, 4, 3, 2, 1] In [85]: x.reverse() 原来列表元素的位置被改变了, In [86]: print(x) [1, 2, 3, 4, 5, 6, 7, 9] In [87]: x=[1,3,5,7,9,6,4,2] In [88]: x.reverse() In [89]: print(x) 位置逆序 [2, 4, 6, 9, 7, 5, 3, 1]