欢迎您, 来到 宁时修博客.^_^

Python从入门到XX----06_数据类型之列表

2017/08/09 林木立 Python 1854
详解Python数据类型--list(列表)

一、list

        list是Python中常见的数据类型,它是被方括号 "[]" 括起来,内中元素以逗号 "," 分隔,举个例子:

    example = [1,2,3,4,"hehe",[2,4,"haha"],{"name":"heh","age":18}]

        以上就是个列表类型,列表中各元素(数据项)不需要具备相同类型,可以是:数字、字符串、列表、字典、布尔值、集合、元组等数据类型。


二、索引

        列表是Python序列的一种,序列中的每个元素都分配一个数字 --- 它的位置(即索引),第一个索引是0,第二个索引是1.......直到最后一个元素的索引为-1,当然从后往前使用负数表示,最后一个是-1,倒数第二是-2.......。

        列表与字符串一样可以进行切片、组合。


    1.1、索引举例说明:

    >>> example = [1,2,3,4,"hehe",[2,4,"haha"],{"name":"heh","age":18}]
    >>> print(example[3])   # 3就是索引值,代表列表中的第四个元素
    4
    >>> print(example[5])  # 5也是索引值,代表列表中的第6个元素
    [2,4,'haha']

        

    1.2、 切片举例说明:

    >>> example = [1,2,3,4,"hehe",[2,4,"haha"],{"name":"heh","age":18}]    
    >>> print(example[5:-1])  # 这就是切片,指定索引范围即可
    [[2,4,'haha']]
    >>> print(example[:3])
    [1,2,3]

        列表切片的结果还是列表。

        不知道大家发现了,切片是顾头不顾尾的,什么意思了?,就是切片并不会返回指定范围的最后一个元素。如上,“ print(example[5:-1])”这个例子并没有打印出最后的元素“{"name":"heh","age":18}”。

        

        切片还可以指定步长:

    >>> example = [1,2,3,4,"hehe",[2,4,"haha"],{"name":"heh","age":18}]    
    >>> print(example[:4:2])
    [1,3]
    >>> print(example[2::2])
    [3,'hehe',{'name':'heh','age':18}]

         [:4:2]  和 [2::2] 是什么意思了?其实就是在python中,切片范围如果是以第一个索引开头或最后一个元素结尾,那么便不需要写出来,当然写和不写没什么区别,如果写出来就是这样的:[0:4:2]和[2:-1:2]。那么其中最后数字2表示什么了?这就是切片时指定步长了。python默认步长为1,为1时不需要写出来。


    1.3、列表的组合:

        我们可以多个列表组合,或者截取一部分元素和其它列表组合,形成一个新的列表。

    >>> example = [1,2,3,4,"hehe",[2,4,"haha"],{"name":"heh","age":18}]
    >>> num = [1,2,3,4,5,6]
    >>> list_1 = example + num
    >>> print(list_1)
    [1, 2, 3, 4, 'hehe', [2, 4, 'haha'], {'name': 'heh', 'age': 18}, 1, 2, 3, 4, 5, 6]
    >>> list_2 = example[:4] + num
    >>> print(list_2)
    [1, 2, 3, 4, 1, 2, 3, 4, 5, 6]


二、Python列表函数

        有这几个函数:len(),max(),min(),list()。

        下面举例说明:

        len():计算列表长度

    >>> example = [1,2,3,4,"hehe",[2,4,"haha"],{"name":"heh","age":18}]
    >>> print(len(example))   # 打印列表长度
    7                         # 结果:7

     

        max():返回列表中元素最大值

        min():返回列表中元素最小值

    >>> num = [1,22,13,44,25,86]
    >>> print(max(num))
    86
    >>> print(min(num))
    1

        注意:列表中的元素只能是数字,不然会报错。

        例:

    >>> example = [1,2,3,4,"hehe",[2,4,"haha"],{"name":"heh","age":18}]
    >>> print(min(example))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: '<' not supported between instances of 'str' and 'int'


        list():强制转换为列表类型,不是所有的数据类型都能转换为列表。

    >>> str = 'abcdefg'
    >>> str_ls = list(str)   # 字符串转换为列表
    >>> print(str_ls)
    ['a', 'b', 'c', 'd', 'e', 'f', 'g']
    
    
    >>> tu = (1,2,3,'haha',['hehe,33'])
    >>> print(type(tu))
    <class 'tuple'>
    >>> tu_ls = list(tu)   # 元组转换为列表
    >>> print(tu_ls)
    [1, 2, 3, 'haha', ['hehe,33']]
    
    
    >>> sets = {'shsh',233,3,'sdsd'}
    >>> print(type(sets))
    <class 'set'>
    >>> sets_ls = list(sets)  # 集合转换为列表
    >>> print(sets_ls)
    ['sdsd', 233, 3, 'shsh']
    
    
    >>> dic = {'name':'Cube','age':24,'hobbies':['sleep','eat','play game']}
    >>> print(type(dic))
    <class 'dict'>
    >>> dic_ls = list(dic)  # 字典转换为列表
    >>> print(dic_ls)
    ['name', 'age', 'hobbies']
    # 字典转为列表后,列表中的元素只是原字典的key,没有value,这是不成功的转换

        从以上可看出,强转数据类型,有些类型之间可以,有些类型之间不可以,切勿乱转换。


三、列表的方法

        3.1 append:列表末尾增加元素

        如果需要对列表增加元素,可以使用append方法。例:

    >>> example = [1,2,3,4,"hehe",[2,4,"haha"],{"name":"heh","age":18}]
    >>> example.append('heihei,22')
    >>> print(example)
    [1, 2, 3, 4, 'hehe', [2, 4, 'haha'], {'name': 'heh', 'age': 18}, 'heihei,22']

        append增加的元素都会放在最后面。


        3.2 insert: 在列表中插入元素

        如果需要在列表的指定位置增加元素,可以使用insert方法。例:

    >>> example = [1,2,3,4,"hehe",[2,4,"haha"],{"name":"heh","age":18}]
    >>>
    >>> example.insert(4,'I am is')
    >>> print(example)
    [1, 2, 3, 4, 'I am is', 'hehe', [2, 4, 'haha'], {'name': 'heh', 'age': 18}]

        如上,我们指定索引插入元素,就会替代原来元素的位置。


        3.3 pop:移除列表中的元素

        pop默认移除列表末尾的元素,也可指定索引移除某个元素,并且返回该元素的值。例:

    >>> example = [1,2,3,4,"hehe",[2,4,"haha"],{"name":"heh","age":18}]
    >>> value = example.pop()
    >>> print(value)
    {'name': 'heh', 'age': 18}
    >>> value1 = example.pop(3)
    >>> print(value1)
    4
    >>> print(example)
    [1, 2, 3, 'hehe', [2, 4, 'haha']]

        

        3.4 remove:删除列表中的元素

        remove与pop相似,但是remove只是单纯的删除,不会有返回值。另外,remove需要指定某个元素删除,不能用索引,并且只删除第一个匹配项。例:

    >>> example = [1,2,3,4,"hehe",[2,4,"haha"],{"name":"heh","age":18}]    
    >>> value = example.remove(2) # 删除列表中的数字2
    >>> print(value)
    None                        # remove没有返回值
    >>> print(example)
    [1, 3, 4, 'hehe', [2, 4, 'haha'], {'name': 'heh', 'age': 18}]
    >>> example.remove(5)       # 利用索引删除报错
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: list.remove(x): x not in list
    >>> example.remove('hehe')  # 删除列表中的字符串'hehe'
    >>> print(example)
    [1, 3, 4, [2, 4, 'haha'], {'name': 'heh', 'age': 18}]

        

        3.5 count:统计某个元素在列表中出现的次数

        count统计次数,例:

    >>> example = [1,2,3,4,"hehe",[2,4,"haha"],'hehe',1,3,'haha']
    >>> print(example.count(2)) # 统计数字2出现的次数
    1
    >>> print(example.count('hehe')) # 统计字符串'hehe’出现的次数
    2
    >>> print(example.count('haha')) # 统计字符串'haha' 出现的次数
    1

        这里有人就会问:数字2和'haha’明明出现两次啊?

        答:列表中元素是以逗号','分隔的独立整体,也就是说[2,4,"haha"]是一个在example中的独立的列表整体,[2,4,"haha"]中的元素不能作为列表example中的元素,所以count不能将[2,4,"haha"]中的2或"haha"统计为example中出现的次数。


        3.6 extend:在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

        extend可以将一些序列添加进原列表当中,扩展原列表。例:

>>> example = [1,2,3,4,"hehe",[2,4,"haha"],'hehe',1,3,'haha']
>>>
>>> example.extend(['hhh',2,3])
>>> print(example)
[1, 2, 3, 4, 'hehe', [2, 4, 'haha'], 'hehe', 1, 3, 'haha', 'hhh', 2, 3]
>>> example.extend(('name','join'))
>>> print(example)
[1, 2, 3, 4, 'hehe', [2, 4, 'haha'], 'hehe', 1, 3, 'haha', 'hhh', 2, 3, 'name', 'join']


点赞
说说你的看法

所有评论: (1)

# 加入组织

1、用手机QQ扫左侧二维码

2、搜Q群:1058582137

3、点击 宁时修博客交流群