Python基础(二):列表常用方法
注:以下代码在ipython下实现,这种交互模式在练习基础知识是非常方便的。
增加
append()方法用于在python的列表的末尾增加内容。
In [1]: li1=[1,2,3] In [2]: li1.append('hello') In [3]: li1 Out[3]: [1, 2, 3, 'hello'] In [4]: li1.append(['a']) In [5]: li1 Out[5]: [1, 2, 3, 'hello', ['a']] In [6]: li1.append(('tuple1'))
In [8]: li1=[1,2,3] In [9]: li1.append(('tuple1,')) In [10]: li1 Out[10]: [1, 2, 3, 'tuple1,']
insert(index,object)方法可以在特定位置插入元素,index代表索引下标。
In [11]: li1=[1,2,3] In [12]: li1.insert(1,'hello') In [13]: li1 Out[13]: [1, 'hello', 2, 3]
extend(iterable)方法可插入可迭代的对象。
In [14]: li1=[1,2,3] In [15]: li1.extend('abc') In [16]: li1 Out[16]: [1, 2, 3, 'a', 'b', 'c'] In [17]: li1.extend(['d','e']) In [18]: li1 Out[18]: [1, 2, 3, 'a', 'b', 'c', 'd', 'e']
删除
clear()方法可以清空整个列表。
In [19]: li1=[1,2,3] In [20]: li1.clear() In [21]: li1 Out[21]: []
pop([index])方法可以弹出任意位置的元素值并且会返回删除的值,其中index索引下标是可选参数,若不选代表删除最后一个值。
In [23]: li1=[1,2,3,5,'hello','python'] In [24]: li1.pop() Out[24]: 'python' In [25]: li1 Out[25]: [1, 2, 3, 5, 'hello'] In [26]: li1.pop(2) Out[26]: 3 In [27]: li1 Out[27]: [1, 2, 5, 'hello']
remove(object)方法可以移除列表中的元素,若列表中有多y个值与要删除的元素的值相同,则只会移除匹配的第一个值。
In [29]: li1=[1,2,3,3,3,4,'hello'] In [30]: li1 Out[30]: [1, 2, 3, 3, 3, 4, 'hello'] In [31]: li1.remove(3) In [32]: li1 Out[32]: [1, 2, 3, 3, 4, 'hello'] In [33]: li1.remove('hello') In [34]: li1 Out[34]: [1, 2, 3, 3, 4]
查找
index(value,[start,[stop]])可以查找目标元素值并返回索引值,其中start和stop为可选参数,代表要查找元素的范围。
In [35]: li1=[1,2,3,3,3,4,'hello']
In [36]: li1.index(4) Out[36]: 5 In [37]: li1.index(3) #相同元素返回第一个索引值 Out[37]: 2 In [38]: li1.index(3,4,6) Out[38]: 4 In [39]: li1.index(3,0,2) #范围原则左闭右开,查找不到报错 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-39-e5b4c08d3bc9> in <module>() ----> 1 li1.index(3,0,2) ValueError: 3 is not in list
count()方法会统计元素出现的次数并返回。
In [40]: li1=[1,2,3,3,3,4,'hello'] In [41]: li1.count(3) Out[41]: 3
其他方法
copy()复制列表中的内容,copy()方法会新开辟一个空间存入复制的列表值,而与“=”不同,“=”是与原列表的地址空间相同,是一种引用。注意下面id()方法后面的值,id()方法返回列表的地址空间。
In [42]: li1=[1,2,3] In [43]: li2=li1.copy() In [44]: li2 Out[44]: [1, 2, 3] In [45]: id(li1) Out[45]: 3028819948 In [46]: id(li2) Out[46]: 3028875340 In [47]: li3=li1 In [48]: li3 Out[48]: [1, 2, 3] In [49]: id(li3) Out[49]: 3028819948
reverse()方法会将列表反序。
In [50]: li1=[1,2,3] In [51]: li1.reverse() In [52]: li1 Out[52]: [3, 2, 1]
sort(key=None,reverse=False)方法对列表进行永久性排序,sorted()方法对列表进行临时排序。
In [54]: li1.sort() In [55]: li1 Out[55]: ['a', 'c', 'd', 'u', 'z'] In [56]: li1=['a','c','z','u','d']
In [59]: li1=['a','c','z','u','d'] In [60]: li1 Out[60]: ['a', 'c', 'z', 'u', 'd'] In [61]: sorted(li1) Out[61]: ['a', 'c', 'd', 'u', 'z'] In [62]: li1 Out[62]: ['a', 'c', 'z', 'u', 'd']
降序排序
In [59]: li1=['a','c','z','u','d'] In [60]: li1 Out[60]: ['a', 'c', 'z', 'u', 'd'] In [61]: sorted(li1) Out[61]: ['a', 'c', 'd', 'u', 'z'] In [62]: li1 Out[62]: ['a', 'c', 'z', 'u', 'd']
#字符串与数字无法排序,可是有key的参数来解决
In [66]: li1=[1,2,'a','x','c','w'] In [67]: li1.sort() --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-67-e7369f1ac399> in <module>() ----> 1 li1.sort() TypeError: unorderable types: str() < int() In [68]: li1.sort(key=str) In [69]: li1 Out[69]: [1, 2, 'a', 'c', 'w', 'x']
In [75]: li1=['1','4',6,5,9,2] In [76]: li1.sort(key=int) In [77]: li1 Out[77]: ['1', 2, '4', 5, 6, 9]
常用的列表方法就这些,如有不当之处欢迎批评指正。