python list几个方法说明:

说明:目前使用的python版本是3.7,win10

首先使用dir()方法列出list对象的所有方法。

In [4]: lst = [1,2,3]

In [5]: list_lst = [x for x in dir(lst) if not x.startswith('_')] #使用列表解析将list的可用方法打印下

In [6]: list_lst
Out[6]:
['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

一共11个方法,个人理解为可分为四类,和数据库一样,增删改查。

增:append、extend、copy、insert

删:clear、pop、remove

改:reverse、sort

查:count、index

下面分别记录下各个方法的使用:

append和extend都是在list队尾增加新对象,但是append()可传入任何参数,它将传入的对象作为一个对象添加到list的队尾。extend()传入的是一个可迭代对象,它将可迭代对象分别进行添加。

In [7]: lst.append?
Signature: lst.append(object, /)

In [10]: lst
Out[10]: [1, 2, 3]

In [11]: lst.append('hello')  #增加一个字符串,这里append传入的是一个对象,和后面的extend有区别
In [13]: lst.append(['name','age'])    #增加一个列表对象,append
In [15]: lst.append({'name':'Cathy'})  #增加一个字典对象

In [16]: lst
Out[16]: [1, 2, 3, 'hello', ['name', 'age'], {'name': 'Cathy'}]

In [20]: lst.extend?
Signature: lst.extend(iterable, /)

In [26]: lst = [1,2,3]

In [27]: lst.extend('abc')   #添加字符串,这里和append方法不一样,字符串为会将各个对象分别进行队尾添加

In [28]: lst.extend(['name','age'])  #添加列表对象,这里和append方法也不一样,会将list对象中的每个对象分别进行添加

In [29]: lst.extend({'name':'Catyh'}) #添加dict对象时,不会像list一样,这里添加的对象时dict中的key作为对象添加。

In [30]: lst
Out[30]: [1, 2, 3, 'a', 'b', 'c', 'name', 'age', 'name']

lst.copy():这个方法是对原有list对象一个浅拷贝。深浅拷贝可进行网上搜下,比较多,简单说明,浅拷贝:只拷贝第一层的对象。深拷贝:类似重新生成一个对象,拷贝的对象和原对象不再有关系,修改不会相互影响。

In [39]: lst = [1,2,['a','b']]

In [40]: lst2 = lst.copy()

In [41]: lst[0] = 123

In [42]: lst[2][0] = 'hello'

In [43]: lst
Out[43]: [123, 2, ['hello', 'b']] #浅拷贝,上层和内层都重新赋值,看下另一个copy的对象结果

In [44]: lst2
Out[44]: [1, 2, ['hello', 'b']]  #可以看到lst2对象只有内层的对象内容进行了改变,外层并未改变。

外层对象不会因为另一个对象的改变而改变,但是内层却会跟着另一个对象的改变而改变。

In [46]: lst.insert?
Signature: lst.insert(index, object, /)

#将object插入到index位置。传入2个对象,索引和对象,抛开索引不说,和append()方法是一样的。

In [52]: lst = [1,2,3]

In [53]: lst.insert(0,'hello')
In [55]: lst.insert(1,['a','b'])

In [56]: lst
Out[56]: ['hello', ['a', 'b'], 1, 2, 3]

 

In [86]: lst.remove?
Signature: lst.remove(value, /) #删除lst中的一个出现的value
Docstring:
Remove first occurrence of value.

In [67]: lst
Out[67]: [1, 2, 3, 41, 1, 2]

In [68]: lst.remove(2)

In [69]: lst
Out[69]: [1, 3, 41, 1, 2]

In [70]: lst.pop?
Signature: lst.pop(index=-1, /) 
  #pop()方法和insert刚好相反。pop()会返回一个index位置的值。

In [71]: lst.pop()
Out[71]: 2

In [72]: lst
Out[72]: [1, 3, 41, 1]

In [74]: lst.pop(1)
Out[74]: 3

In [75]: lst
Out[75]: [1, 41, 1]

                                                           

改:reverse/sort,返回一个新的list对象

reverse():将list对象进行倒叙

sort():将list对象进行排序,默认为升序,可以用参数reverse=True变为降序

In [96]: lst
Out[96]: [1, 2, 3, 4, 12, 2, 1]

In [97]: lst.sort(reverse=True) #revese参数用来指定排序方式,默认为False(升序),可更改为True(降序)

In [98]: lst
Out[98]: [12, 4, 3, 2, 2, 1, 1]

In [104]: lst = [1,2,-3,2,11,3,-4]  #重新定义一个新list对象,验证sort的key参数:

In [105]: lst.sort(key=abs)         #key参数为一个方法,对lst进行abs,然后排序

In [106]: lst
Out[106]: [1, 2, 2, -3, 3, -4, 11]

In [107]: lst.sort(key=abs,reverse=True)

In [108]: lst
Out[108]: [11, -4, -3, 3, 2, 2, 1]

查:count/index

In [110]: lst.count?
Signature: lst.count(value, /)   #返回value的个数
Docstring: Return number of occurrences of value.

In [117]: lst
Out[117]: [11, -4, -3, 3, 2, 2, 1]

In [120]: lst.count(11)
Out[120]: 1

In [121]: lst.count(2)
Out[121]: 2
In [122]: lst.index?   #返回value值的位置,起始位置可由start和stop决定
Signature: lst.index(value, start=0, stop=9223372036854775807, /)
Docstring: Return first index of value.

In [139]: lst.index(2,5) start=5,index不指定关键字
Out[139]: 5

In [140]: lst.index(2,0) #start=0,index不指定关键字
Out[140]: 4

In [141]: lst.index(2,0,10) #start=0,stop=10,index不指定关键字
Out[141]: 4

In [142]: lst.index(2,5,10)  #start=5,stop=10,index不指定关键字
Out[142]: 5

In [143]: lst
Out[143]: [11, -4, -3, 3, 2, 2, 1]

 

 

 

你可能感兴趣的:(python list几个方法说明:)