• 2015/9/1 Python基础(6):列表


    列表和字符串类型很相似,是同样的序列式数据类型。
    但是字符串只能由字符组成,列表可以保留任意数目的Python对象的灵活的容器。
    Python的列表比C的数组要灵活,数组里面只能是一种类型,列表可以有多种。
    列表可以执行pop,empt,sort,reverse等操作,可以添加或减少元素。可以和其他的列表结合或者把一个列表分成几个,可以对单独的元素执行insert,update或者remove操作。
    创建列表是用[]来定义的,也可以用工厂方法创建

    >>> aList = [12,'abc',1.23,['list','in']]
    >>> anotherList = [None, 'something']
    >>> print aList
    [12, 'abc', 1.23, ['list', 'in']]
    >>> print anotherList
    [None, 'something']
    >>> aList = []
    >>> print aList
    []
    >>> list('Python')
    ['P', 'y', 't', 'h', 'o', 'n']

    访问列表的值用索引或者切片的方法。这里不赘述。
    更新列表
    可以像C一样,指定一个索引或者索引范围来更新元素。或者使用append()方法来追加元素到列表中去

    >>> aList = list('a1bc')
    >>> print aList
    ['a', '1', 'b', 'c']
    >>> aList[0] = 1.2
    >>> print aList
    [1.2, '1', 'b', 'c']
    >>> aList[1:2] = ['x',3]
    >>> print aList
    [1.2, 'x', 3, 'b', 'c']
    >>> aList.append(4.56)
    >>> print aList
    [1.2, 'x', 3, 'b', 'c', 4.56]

    删除列表中的元素或者列表(本身)
    要删除元素的索引可以使用del语句,否则使用remove()方法

    >>> aList
    [123, 'abc', 'float replacer', ['inner', 'list'], (7-9j)]
    >>> del aList[1]
    >>> aList
    [123, 'float replacer', ['inner', 'list'], (7-9j)]
    >>> aList.remove(123)
    >>> aList
    ['float replacer', ['inner', 'list'], (7-9j)]

    还可以用pop()方法来删除并从列表中返回一个特定对象。
    一般来说不需要去删除一个对象列表,如果想明确地删除一整个列表可以用del语句:del aList

    Python没有专门用于列表类型的操作符,但是有属于自己的方法。列表有列表解析,是结合了列表的方括弧和for循环。以后会再专门学到列表解析。届时写一个列表解析的内容,这里只写一个简单的例子:

    >>> [ i * 2 for i in [8, -2, 5] ]
    [16, -4, 10]
    >>> [ i for i in range(8) if i % 2 == 0 ]
    [0, 2, 4, 6]

    内建函数

    一些序列类型的函数在列表里非常有用如:
    max()、min()、sorted()、reversed()、enumerate()、zip()还有sum()
    列表类型内建函数 只有range()函数
    列表类型的内建函数
    列表有自己的方法,在之后学习。可以用dir()方法来得到一个列表对象的所有方法和属性。

    >>> dir(list)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
    方法 作用
    list.append(obj) 向列表中添加一个对象obj
    list.count(obj) 返回一个对象obj 在列表中出现的次数
    list.extend(seq) 把序列seq 的内容添加到列表中
    list.index(obj, i=0,j=len(list)) 返回list[k] == obj 的k 值,并且k 的范围在 i<=k<j;否则引发ValueError 异常.
    list.insert(index, obj)  在索引量为index 的位置插入对象obj.
    list.pop(index=-1) 删除并返回指定位置的对象,默认是最后一个对象
    list.remove(obj) 从列表中删除对象obj
    list.reverse()  原地翻转列表
    list.sort(func=None,key=None,reverse=False)  以指定的方式排序列表中的成员,如果func 和key 参数指定,则按照指定的方式比较各个元素,如果reverse 标志被置为True,则列表以反序排列.

    核心笔记:
    可以改变对象值的可变对象的方法是没有返回值的!
    Python 初学者经常会陷入一个误区:调用一个方法就返回一个值.最明显的例子就是
    sort():

    >>> music_media.sort()# 没有输出?
    >>>

    在使用可变对象的方法如sort(),extend()和reverse()的时候要注意,这些操作会在列表
    中原地执行操作,也就是说现有的列表内容会被改变,但是没有返回值!是的,与之相反,字符串
    方法确实有返回值:

    >>> 'leanna, silly girl!'.upper()
    'LEANNA, SILLY GIRL!'

    温习一下,字符串是不可变的 -- 不可变对象的方法是不能改变它们的值的,所以它们必须
    返回一个新的对象.
    如果用列表一定要返回一个对象,可以使用reversed()和sorted()。

    列表特殊特性
    用列表构建其他数据结构
    用列表容器和可变的特性可以轻松的构造其他数据结构,如堆栈和队列。
    具体实现过程不在博文里赘述了。

  • 相关阅读:
    Hash大法
    最小表示法
    KMP算法题集
    分块总结
    2018 雅礼国庆集训
    二分图总结
    贪心总结
    Tire树总结(模板+例题)
    工具类文章合集
    网文胡乱汇总
  • 原文地址:https://www.cnblogs.com/SRL-Southern/p/4776958.html
Copyright © 2020-2023  润新知