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
list(列表)源码
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']
append()方法:(append(附加追加的意思)也就是往列表里面追加数据)
1 name = ['Brian','Alex','Jack']  # 定义一个name的列表里面存放着三个名字
2 name.insert(1,'Tom')            # 使用insert方法往列表中1下标的位置插入Tom
3 print(name)                     # 打印name看效果(insert方法根据你定义的位置插入数据)
4 # 打印结果是:['Brian', 'Tom', 'Alex', 'Jack']
insert()方法:(insert(插入的意思)也就是可以指定列表中的下标插入数据)
1 name = ['Brian','Alex','Jack']  # 定义一个name的列表里面存放着三个名字
2 name.pop()                      # pop方法不加任何参数
3 name.pop(1)                     # pop方法加上列表中元素的下标
4 print(name)                     # 打印name看效果(pop方法不加任何参数,默认删除最后一个,加上列表元素下标,删除指定元素)
5 # 打印结果是:['Brian']
pop()方法:(pop(删除)指定下标删除列表元素)
name = ['Brian','Alex','Jack']  # 定义一个name的列表里面存放着三个名字
name.remove('Alex')             # 使用remove方法加上列表中的元素
print(name)                     # 打印name看效果(remove方法加上指定的列表元素,删除元素)
# 打印结果是:['Brian', 'Jack']
remove()方法:(remove(删除)指定列表元素删除元素)
1 name = ['Brian','Alex','Jack']  # 定义一个name的列表里面存放着三个名字
2 del name[0]                     # 使用del指定name列表中的第0个下标
3 print(name)                     # 打印name看效果(del方法可以根据列表元素下标,删除元素)
4 # 打印结果是:['Alex', 'Jack']
del()方法: (del(删除)不仅是个方法也是个函数,和pop有相同的功能,指定下标删除列表元素)
1 name = ['Brian','Alex','Jack']  # 定义一个name的列表里面存放着三个名字
2 name.clear()                    # 使用clear方法
3 print(name)                     # 打印name看效果(clear方法清空整个列表)
4 # 打印结果是:[]
clear()方法:(clear(清空)清空整个列表)
1 name = ['Brian','Alex','Jack','Alex']  # 定义一个name的列表里面存放着四个名字
2 name1 = name.count('Alex')             # 通过使用count()方法,找出Alex在列表的个数
3 print(name1)                           # 打印name看效果
4 # 打印结果是:2
count()方法:(count(统计)统计整个列表的相同元素个数)
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]
extend()方法:(extend(延伸扩大)对当前列表进行扩展)
1 name = ['Brian','Alex','Jack','Alex']   # 定义一个name的列表里面存放着四个名字
2 name.reverse()                          # 使用revers方法
3 print(name)                             # 打印name看效果
4 # 打印结果是:['Alex', 'Jack', 'Alex', 'Brian']
reverse()方法:(reverse(翻转,倒转)对列表进行翻转)
 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']
sort()方法: (sort(排序)对列表进行排序)
1 name = ['Brian','Alex','Jack','zjz']        # 定义一个列表
2 n = name.index('Jack')                      # 使用index方法查找Jack的下标位置赋值给n
3 print(n)                                    # 打印n看结果
4 # 打印的结果是:2
index()方法:(获取列表中的指定元素下标)
 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的列表没有改变 拷贝成功)
列表的copy方法(copy分为浅拷贝和深拷贝)

 

posted @ 2017-06-11 18:14  Brian_Zhu  阅读(133)  评论(0)    收藏  举报