Python 列表
今天主要来练习Python中列表(list)的所有方法
可以在Python的交互式界面使用 help(list) 命令来查看 也可以在Pycharm中查看
交互式终端

pycharm中

下面是Python中 list(列表)的所有方法(他被包含在一个list的类中)
class list(object): """ list() -> new empty list list(iterable) -> new list initialized from iterable's items """ def append(self, p_object): # real signature unknown; restored from __doc__ """ L.append(object) -> None -- append object to end """ pass def clear(self): # real signature unknown; restored from __doc__ """ L.clear() -> None -- remove all items from L """ pass def copy(self): # real signature unknown; restored from __doc__ """ L.copy() -> list -- a shallow copy of L """ return [] def count(self, value): # real signature unknown; restored from __doc__ """ L.count(value) -> integer -- return number of occurrences of value """ return 0 def extend(self, iterable): # real signature unknown; restored from __doc__ """ L.extend(iterable) -> None -- extend list by appending elements from the iterable """ pass def index(self, value, start=None, stop=None): # real signature unknown; restored from __doc__ """ L.index(value, [start, [stop]]) -> integer -- return first index of value. Raises ValueError if the value is not present. """ return 0 def insert(self, index, p_object): # real signature unknown; restored from __doc__ """ L.insert(index, object) -- insert object before index """ pass def pop(self, index=None): # real signature unknown; restored from __doc__ """ L.pop([index]) -> item -- remove and return item at index (default last). Raises IndexError if list is empty or index is out of range. """ pass def remove(self, value): # real signature unknown; restored from __doc__ """ L.remove(value) -> None -- remove first occurrence of value. Raises ValueError if the value is not present. """ pass def reverse(self): # real signature unknown; restored from __doc__ """ L.reverse() -- reverse *IN PLACE* """ pass def sort(self, key=None, reverse=False): # real signature unknown; restored from __doc__ """ L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* """ pass def __add__(self, *args, **kwargs): # real signature unknown """ Return self+value. """ pass def __contains__(self, *args, **kwargs): # real signature unknown """ Return key in self. """ pass def __delitem__(self, *args, **kwargs): # real signature unknown """ Delete self[key]. """ pass def __eq__(self, *args, **kwargs): # real signature unknown """ Return self==value. """ pass def __getattribute__(self, *args, **kwargs): # real signature unknown """ Return getattr(self, name). """ pass def __getitem__(self, y): # real signature unknown; restored from __doc__ """ x.__getitem__(y) <==> x[y] """ pass def __ge__(self, *args, **kwargs): # real signature unknown """ Return self>=value. """ pass def __gt__(self, *args, **kwargs): # real signature unknown """ Return self>value. """ pass def __iadd__(self, *args, **kwargs): # real signature unknown """ Implement self+=value. """ pass def __imul__(self, *args, **kwargs): # real signature unknown """ Implement self*=value. """ pass def __init__(self, seq=()): # known special case of list.__init__ """ list() -> new empty list list(iterable) -> new list initialized from iterable's items # (copied from class doc) """ pass def __iter__(self, *args, **kwargs): # real signature unknown """ Implement iter(self). """ pass def __len__(self, *args, **kwargs): # real signature unknown """ Return len(self). """ pass def __le__(self, *args, **kwargs): # real signature unknown """ Return self<=value. """ pass def __lt__(self, *args, **kwargs): # real signature unknown """ Return self<value. """ pass def __mul__(self, *args, **kwargs): # real signature unknown """ Return self*value.n """ pass @staticmethod # known case of __new__ def __new__(*args, **kwargs): # real signature unknown """ Create and return a new object. See help(type) for accurate signature. """ pass def __ne__(self, *args, **kwargs): # real signature unknown """ Return self!=value. """ pass def __repr__(self, *args, **kwargs): # real signature unknown """ Return repr(self). """ pass def __reversed__(self): # real signature unknown; restored from __doc__ """ L.__reversed__() -- return a reverse iterator over the list """ pass def __rmul__(self, *args, **kwargs): # real signature unknown """ Return self*value. """ pass def __setitem__(self, *args, **kwargs): # real signature unknown """ Set self[key] to value. """ pass def __sizeof__(self): # real signature unknown; restored from __doc__ """ L.__sizeof__() -- size of L in memory, in bytes """ pass __hash__ = None
PS: 在列表中每个元素(就是列表中的值)是通过下标(每个值在列表中的位置)进行标注的,下标的值是从第0个开始的
学习流程:
''' 1、append() # 往列表中追加数据 2、insert() # 通过下标把数据插入到指定的位置 3、pop() # 删除列表中的元素 4、remove() # 删除列表中的元素 5、del() # 删除列表中的元素 6、clear() # 清空整个列表 7、count() # 统计列表中的所有元素 8、extend() # 延伸扩大列表 9、reverse() # 倒转列表 10、sort() # 对列表进行排序 11、index() # 查询列表中元素的下标 12、 # 对列表进行切片查询 13、 # 对列表进行修改 14、copy() # 对列表进行拷贝(深拷贝和浅拷贝) '''
下面是每个方法的实例(我们只是针对没有双下划线的方法(__add__)进行讲解):
1 name = ['Brian','Alex','Jack'] # 定义一个name的列表里面存放着三个名字 2 name.append('Python') # 使用append的方法往name里面增加一个Python名字 3 print(name) # 打印name看效果(append的方法默认是增加到列表的最后) 4 # 打印结果是:['Brian', 'Alex', 'Jack', 'Python']
1 name = ['Brian','Alex','Jack'] # 定义一个name的列表里面存放着三个名字 2 name.insert(1,'Tom') # 使用insert方法往列表中1下标的位置插入Tom 3 print(name) # 打印name看效果(insert方法根据你定义的位置插入数据) 4 # 打印结果是:['Brian', 'Tom', 'Alex', 'Jack']
1 name = ['Brian','Alex','Jack'] # 定义一个name的列表里面存放着三个名字 2 name.pop() # pop方法不加任何参数 3 name.pop(1) # pop方法加上列表中元素的下标 4 print(name) # 打印name看效果(pop方法不加任何参数,默认删除最后一个,加上列表元素下标,删除指定元素) 5 # 打印结果是:['Brian']
name = ['Brian','Alex','Jack'] # 定义一个name的列表里面存放着三个名字 name.remove('Alex') # 使用remove方法加上列表中的元素 print(name) # 打印name看效果(remove方法加上指定的列表元素,删除元素) # 打印结果是:['Brian', 'Jack']
1 name = ['Brian','Alex','Jack'] # 定义一个name的列表里面存放着三个名字 2 del name[0] # 使用del指定name列表中的第0个下标 3 print(name) # 打印name看效果(del方法可以根据列表元素下标,删除元素) 4 # 打印结果是:['Alex', 'Jack']
1 name = ['Brian','Alex','Jack'] # 定义一个name的列表里面存放着三个名字 2 name.clear() # 使用clear方法 3 print(name) # 打印name看效果(clear方法清空整个列表) 4 # 打印结果是:[]
1 name = ['Brian','Alex','Jack','Alex'] # 定义一个name的列表里面存放着四个名字 2 name1 = name.count('Alex') # 通过使用count()方法,找出Alex在列表的个数 3 print(name1) # 打印name看效果 4 # 打印结果是:2
1 name = ['Brian','Alex','Jack','Alex'] # 定义一个name的列表里面存放着四个名字 2 name2 = ['zhangsan','lisi',1,2,3] # 定义一个name2的列表存入元素 3 name.extend(name2) # 使用extend方法加入name2列表 4 print(name) # 打印name看效果 5 # 打印结果是:['Brian', 'Alex', 'Jack', 'Alex', 'zhangsan', 'lisi', 1, 2, 3]
1 name = ['Brian','Alex','Jack','Alex'] # 定义一个name的列表里面存放着四个名字 2 name.reverse() # 使用revers方法 3 print(name) # 打印name看效果 4 # 打印结果是:['Alex', 'Jack', 'Alex', 'Brian']
1 name = ['@!Brian','Alex','zhangsan',1,2,3] # 定义一个name列表放入不同类型的元素 2 name.sort() # 使用sort方法进行列表排序 3 print(name) # 打印name看结果 4 # 打印结果是:如下 5 ''' 6 用这样的方式进行排序在3.x版本中会出现一个报错 7 Traceback (most recent call last): 8 File "<stdin>", line 1, in <module> 9 TypeError: unorderable types: int() < str() # 3.0里不同数据类型不能放在一起排序了,擦 10 ''' 11 name = ['@!Brian','Alex','zhangsan'] # 定义一个name列表放入相同类型的元素 12 name.sort() # 使用sort方法 13 print(name) # 打印name看结果 14 # 打印的结果是:['@!Brian', 'Alex', 'zhangsan']
1 name = ['Brian','Alex','Jack','zjz'] # 定义一个列表 2 n = name.index('Jack') # 使用index方法查找Jack的下标位置赋值给n 3 print(n) # 打印n看结果 4 # 打印的结果是:2
1 names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"] 2 n1 = names[1:4] # 取下标1至下标4之间的数字,包括1,不包括4 3 print(n1) 4 # 打印结果是:['Tenglan', 'Eric', 'Rain'] 5 n2 = names[1:-1] # 取下标1至-1的值,不包括-1 6 print(n2) 7 # 打印结果是:['Tenglan', 'Eric', 'Rain', 'Tom'] 8 n3 = names[0:3] # 是从头开始取到第3个 9 print(n3) 10 # 打印的结果是:['Alex', 'Tenglan', 'Eric'] 11 n4 = names[:3] # 如果是从头开始取,0可以忽略,跟上句效果一样 12 print(n4) 13 # 打印结果是:['Alex', 'Tenglan', 'Eric'] 14 n5 = names[3:] # 如果想取最后一个,必须不能写-1,只能这么写 15 print(n5) 16 # 打印结果是:['Rain', 'Tom', 'Amy'] 17 n6 = names[3:-1] # 这样-1就不会被包含了 18 print(n6) 19 # 打印结果是:['Rain', 'Tom'] 20 n7 = names[0::2] # 后面的2是代表,每隔一个元素,就取一个 21 print(n7) 22 # 打印结果是:['Alex', 'Eric', 'Tom'] 23 n8 = names[::2] # 和上句效果一样 24 print(n8) 25 # 打印结果是:['Alex', 'Eric', 'Tom']
1 names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"] # 定义一个原始的列表 2 names[2] = 'Brian' # 把列表的第二个下标的元素修改成Brian 3 print(names) # 打印names看结果 4 # 打印结果是:['Alex', 'Tenglan', 'Brian', 'Rain', 'Tom', 'Amy']
1 # 浅拷贝 2 names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"] # 定义一个原始的列表 3 name_copy = names.copy() # 使用列表的copy方法 4 print(name_copy) # 打印name_copy看结果(结果是和原始的列表完全一样的) 5 # 打印结果是:["Alex","Tenglan","Eric","Rain","Tom","Amy"] 6 names[2] = 'eric' # 现在我将names的Eric改成eric,我们来看现在的区别 7 print(names) # 打印names 8 print(name_copy) # 打印name_copy (对比结果) 9 # names打印结果是:['Alex', 'Tenglan', 'eric', 'Rain', 'Tom', 'Amy'] 10 # name_copy打印结果是:['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy'] 11 # 看到names中Eric变成了eric,name_copy没有变,这说明names确实是被copy了一份 12 13 14 # 如果在浅拷贝中,我们在原始的列表中在嵌套一个列表 15 names = ["Alex","Tenglan","Eric",['panjinlian','ximenqing'],"Rain","Tom","Amy"] # 定义一个嵌套的列表 16 name_copy = names.copy() # 使用copy方法拷贝names列表为name_copy 17 print(names) # 打印names 18 print(name_copy) # 打印name_copy(对比结果) 19 # names打印结果是:['Alex', 'Tenglan', 'Eric', ['panjinlian', 'ximenqing'], 'Rain', 'Tom', 'Amy'] 20 # name_copy打印结果是:['Alex', 'Tenglan', 'Eric', ['panjinlian', 'ximenqing'], 'Rain', 'Tom', 'Amy'] (结果完全一样拷贝成功) 21 22 23 names[2] = 'eric' # 修改names中下标为2的Eric元素为eric 24 print(names) # 打印names 25 print(name_copy) # 打印name_copy (对比结果) 26 # names打印结果是:['Alex', 'Tenglan', 'eric', ['panjinlian', 'ximenqing'], 'Rain', 'Tom', 'Amy'] 27 # name_copy打印结果是:['Alex', 'Tenglan', 'Eric', ['panjinlian', 'ximenqing'], 'Rain', 'Tom', 'Amy'] (当我们修改完names后names_copy没有改变,拷贝成功) 28 29 names[3][1] = 'wudalang' # 修改嵌套列表中的元素ximenqing改为wudalang 30 print(names) # 打印names 31 print(name_copy) # 打印name_copy (对比结果) 32 # names打印结果是:['Alex', 'Tenglan', 'eric', ['panjinlian', 'wudalang'], 'Rain', 'Tom', 'Amy'] 33 # name_copy打印结果是:['Alex', 'Tenglan', 'Eric', ['panjinlian', 'wudalang'], 'Rain', 'Tom', 'Amy'](我擦 竟然都改变了,这就说明拷贝失败了,那怎么解决呢???) 34 35 36 # 深拷贝 37 import copy # 导入python的内置函数copy 38 names = ["Alex","Tenglan","Eric",['panjinlian','ximenqing'],"Rain","Tom","Amy"] # 定义一个嵌套列表 39 name_copy = copy.deepcopy(names) # 使用copy函数中的深拷贝copy names列表为name_copy 40 print(names) # 打印names 41 print(name_copy) # 打印name_copy 42 # names打印结果是:['Alex', 'Tenglan', 'Eric', ['panjinlian', 'ximenqing'], 'Rain', 'Tom', 'Amy'] 43 # name_copy打印结果是:['Alex', 'Tenglan', 'Eric', ['panjinlian', 'ximenqing'], 'Rain', 'Tom', 'Amy'] (完全一样拷贝成功) 44 45 46 names[2] = 'eric' # 修改names中下标为2的Eric元素为eric 47 name_copy[3][1] = 'wudalang' # 修改嵌套列表中的元素ximenqing改为wudalang 48 print(names) # 打印names 49 print(name_copy) # 打印name_copy 50 # names打印结果是:['Alex', 'Tenglan', 'eric', ['panjinlian', 'ximenqing'], 'Rain', 'Tom', 'Amy'] 51 # name_copy打印结果是:['Alex', 'Tenglan', 'Eric', ['panjinlian', 'wudalang'], 'Rain', 'Tom', 'Amy'] (我们 可以很直观的看出修改一个列表元素copy的列表没有改变 拷贝成功)
朱敬志(brian),成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。

浙公网安备 33010602011771号