zoukankan      html  css  js  c++  java
  • Python 简明教程 ---10,Python 列表

    微信公众号:码农充电站pro
    个人主页:https://codeshellme.github.io

    程序 = 算法 + 数据结构
    —— Nicklaus Wirth

    目录

    在这里插入图片描述

    从这句话程序 = 算法 + 数据结构 可以看出数据结构对于编程的重要性。数据结构就是数据的组织/存储方式。

    从本节开始我们将介绍Python 中的数据结构:

    • 列表 list
    • 元组 tuple
    • 字典 dict
    • 集合 set

    这些数据结构在Python3.x 中都是一个类class

    >>> list
    <class 'list'>
    >>> tuple
    <class 'tuple'>
    >>> dict
    <class 'dict'>
    >>> set
    <class 'set'>
    

    提示:

    这几个类名listtupledictset 并不是Python 中的保留字,你可以使用它们作为变量名,但一般并不建议这样做。

    可使用keyword 模块来查看Python 中的保留字。

    Python 中数据结构非常易用,且语法简单。我们将介绍这些数据结构的使用方法。

    本节我们介绍Python 中的列表 list

    1,Python 列表

    大部分编程语言中都有数组的概念,数组中元素的类型必须相同。

    Python 中没有数组的概念,Python 列表可看作是一种增强版的数组。

    Python 列表有如下特点:

    • 列表中的元素可以是任意类型的数据
    • 可使用下标切片访问列表内容
    • 可在列表的任意位置插入删除元素
    • 使用列表时,无须关注列表的容量问题,Python 会在需要的时候自动扩容缩容

    2,声明列表

    Python 中的列表使用中括号[] 表示:

    >>> l = []       # 一个空列表
    >>> l = ['a', 'bc', 1, 2.5, True] # 列表元素可以是任意类型
    >>> type(l)      
    <class 'list'>
    

    3,列表元素个数

    使用len() 函数可查看列表中的元素个数:

    >>> l = ['a', 'bc', 1, 2.5, True]
    >>> len(l)
    5
    

    4,访问列表元素

    可以像访问字符串一样,使用下标来访问列表元素:

    >>> l = ['a', 'bc', 1, 2.5, True]
    >>> l[0]	# 访问第 1 个元素
    'a'
    >>> l[4]	# 访问第 5 个元素
    True
    >>> l[5]    # 超出范围,抛出异常
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    >>> l[-1]	# 访问倒数第 1 个元素
    True
    >>> l[-5]   # 访问倒数第 5 个元素
    'a'
    >>> l[-6]   # 超出范围,抛出异常
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    

    5,列表部分元素

    同样可以向截取字符串 一样来截取部分列表元素:

    >>> l = ['a', 'bc', 1, 2.5, True]
    >>> l[1:3]
    ['bc', 1]
    >>> l[1:]
    ['bc', 1, 2.5, True]
    >>> l[:4]
    ['a', 'bc', 1, 2.5]
    >>> l[:]
    ['a', 'bc', 1, 2.5, True]
    

    6,遍历列表

    可使用 for 循环来遍历列表:

    l = ['a', 'bc', 1, 2.5, True]
    for item in l:
        print(item)
    

    以上代码的输出如下:

    a
    bc
    1
    2.5
    True
    

    7,修改和删除元素

    修改列表元素

    我们可以使用下标赋值语句 来修改列表元素:

    >>> l = ['a', 'bc', 1, 2.5, True]
    >>> l[0] = 'x'      # 第 1 个元素改为 ‘x’
    >>> l[3] = 5        # 第 4 个元素改为 5
    >>> l               # 修改后的列表
    ['x', 'bc', 1, 5, True]
    

    删除列表元素

    可以使用下标del 关键字来删除列表元素:

    >>> l = ['a', 'bc', 1, 2.5, True]
    >>> del l[1]	# 删除第 2 个元素
    >>> del l[3]    # 删除第 4 个元素
    >>> l           # 删除元素后的列表
    ['a', 1, 2.5]
    

    8,列表运算

    Python 列表可以进行加运算乘运算in 运算

    列表加运算

    一个列表和另一个列表可以相加,得到一个新的列表:

    >>> l1 = ['a', 'b', 'c']
    >>> l2 = [1, 2, 3]
    >>> l3 = l1 + l2
    >>> l3 # 新的列表
    ['a', 'b', 'c', 1, 2, 3]
    

    列表乘运算

    一个列表可以乘以一个整数n

    • n <= 0 时,得到一个空列表[]
    • n > 0 时,相当于 n 个列表相加

    示例:

    >>> ['a', 'b'] * -1
    []
    >>> ['a', 'b'] * 0
    []
    >>> ['a', 'b'] * 2
    ['a', 'b', 'a', 'b']
    

    列表in 运算

    可以通过 in 运算来查看一个元素是否存在于列表中,返回一个 bool 类型:

    >>> 'a' in ['a', 'b']
    True
    >>> 'a' not in ['a', 'b']
    False
    

    9,列表函数

    Python 中的list 是一个 class,可通过type(列表对象)来查看:

    >>> type([])     # 空列表
    <class 'list'>
    

    可通过dir(list)dir(列表对象) 来查看Python list 支持的方法:

    >>> dir(list)
    ['__add__', '__class__', '__contains__', 
    '__delattr__', '__delitem__', '__dir__', 
    '__doc__', '__eq__', '__format__', 
    '__ge__', '__getattribute__', 
    '__getitem__', '__gt__', '__hash__', 
    '__iadd__', '__imul__', '__init__', 
    '__init_subclass__', '__iter__', 
    '__le__', '__len__', '__lt__', '__mul__', 
    '__ne__', '__new__', '__reduce__', 
    '__reduce_ex__', '__repr__', '__reversed__', 
    '__rmul__', '__setattr__', '__setitem__', 
    '__sizeof__', '__str__', '__subclasshook__', 
    'append', 'clear', 'copy', 'count', 
    'extend', 'index', 'insert', 
    'pop', 'remove', 'reverse', 'sort']
    

    这里我们依然只关注非魔法方法,共11 个。

    1.append 方法

    作用:在列表L 的尾部追加元素
    原型:L.append(object) -> None
    参数:要追加的元素,可以是任意类型
    返回值:总是返回 None

    示例:

    >>> l = [1]        # 初始化一个列表
    >>> l.append(2)    # 在尾部追加 2
    >>> l
    [1, 2]
    >>> l.append(3)    # 在尾部追加 3
    >>> l
    [1, 2, 3]
    

    2.insert 方法

    作用:在列表Lindex 下标之前插入元素object
    原型:L.insert(index, object)
    参数 index:插入元素的位置
    参数 object:要插入的元素
    返回值:无返回值

    示例:

    >>> l = ['a', 'b', 'c']	     # 初始化一个列表
    >>> l.insert(1, 'xx')        # 在列表的下标 1 处插入 'xx' 
    >>> l
    ['a', 'xx', 'b', 'c']        # 插入后,'xx' 下标为 1
    >>> l.insert(3, 'yy')        # 在列表的下标 3 处插入 'yy'
    >>> l
    ['a', 'xx', 'b', 'yy', 'c']  # 插入后,'yy' 的下标为 3
    

    3.remove 方法

    作用:从表头开始,删除列表L第一个值为value 的元素,如果值为value 的元素不存在,则抛出ValueError 异常
    原型:L.remove(value) -> None
    参数:要删除的元素的值
    返回值:总是返回 None

    示例:

    >>> l = ['a', 'b', 'b', 'c']
    >>> l.remove('b')  # 删除第一个值为 'b' 的元素
    >>> l
    ['a', 'b', 'c']
    >>> l.remove('c')  # 删除第一个值为 'c' 的元素
    >>> l
    ['a', 'b']
    >>> l.remove('c')  # 已经不存在值为 'c' 的元素,抛出 ValueError 异常
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: list.remove(x): x not in list
    

    4.pop 方法

    作用:移除并返回下标为 index 的元素,下标不存在时,抛出IndexError 异常
    原型:L.pop([index]) -> item
    参数:要移除的元素的下标,可省,默认为最后一个
    返回值:移除的元素

    示例:

    >>> l = ['a', 'b', 'c']
    >>> item = l.pop()   # 移除最后一个元素
    >>> item
    'c'
    >>> l
    ['a', 'b']
    >>> l.pop(3)   # 不存在下标为 3 的元素,抛出异常
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: pop index out of range
    

    5.clear 方法

    作用:清空列表L
    原型:L.clear() -> None
    参数:无
    返回值:总是返回 None

    示例:

    >>> l = ['a', 'b', 'c']
    >>> l.clear()
    >>> l   # 列表被清空
    []
    

    6.count 方法

    作用:计算列表L 中值为value 的个数
    原型:L.count(value) -> integer
    参数:要计算的元素的值
    返回值:个数

    示例:

    >>> l = ['a', 'b', 'c', 'a']
    >>> l.count('a')
    2
    >>> l.count('b')
    1
    >>> l.count('d')
    0
    

    7.copy 方法

    作用:浅拷贝列表L,相当于L[:]
    原型:L.copy() -> list
    参数:无
    返回值:一个列表

    示例:

    >>> l = ['a', 'b', 'c']
    >>> l2 = l.copy()
    >>> l2
    ['a', 'b', 'c']
    

    8.extend 方法

    作用:在列表L 尾部追加一个序列iterable
    原型:L.extend(iterable) -> None
    参数iterable 可以是任意一种序列类型
    返回值:总是返回 None

    示例:

    >>> l1 = ['a', 'b', 'c']
    >>> l2 = ['1', '2', '3']
    >>> l1.extend(l2)
    >>> l1
    ['a', 'b', 'c', '1', '2', '3']
    

    9.reverse 方法

    作用:将列表L 翻转
    原型:L.reverse()
    参数:无
    返回值:无返回值

    示例:

    >>> l = ['a', 'b', 'c']
    >>> l.reverse()
    >>> l
    ['c', 'b', 'a']
    

    10.sort 方法

    作用:对列表L 进行排序
    原型:L.sort(key=None, reverse=False) -> None
    参数 key

    key 是一个函数类型的参数,该函数接收一个参数item1,并返回一个值item2
    sort 方法根据item2 进行排序,item1L 中的每个元素 。
    key 可省,默认为None,表示直接使用L 中的元素进行排序。

    参数 reverse

    reverseTrue 表示按照降序排序。
    reverseFalse 表示按照升序排序。
    reverse 可省,默认为 False

    返回值:总是返回 None

    示例,keyNone

    >>> l = ['b', 'a', 'd', 'c'] # 一个乱序的列表
    >>> l.sort()                 # 升序排序
    >>> l
    ['a', 'b', 'c', 'd']
    >>> l.sort(reverse=True)     # 降序排序
    >>> l
    ['d', 'c', 'b', 'a']
    

    示例,key 不为 None

    >>> l = [('c', 1), ('b', 2), ('a', 3)] # 列表中的元素是元组类型
    >>> def key(item): return item[0]      # 该函数返回元组的第一个元素
    >>> l.sort(key=key)                    # 以元组的第一个元素进行排序
    >>> l
    [('a', 3), ('b', 2), ('c', 1)]
    >>>
    >>> l = [('c', 1), ('b', 2), ('a', 3)] 
    >>> def key(item): return item[1]      # 该函数返回元组的第二个元素
    >>> l.sort(key=key)                    # 以元组的第二个元素进行排序
    >>> l
    [('c', 1), ('b', 2), ('a', 3)]
    

    提示:

    一个函数也可以作为参数传递给另一个函数,后续讲到函数的概念时,会详细讲解。

    11.index 方法

    作用:从列表L[start:stip]表头查找第一个值为value 的元素
    原型:L.index(value, [start, [stop]]) -> integer
    参数 value:查找值为value 的元素
    参数 start:列表L 的起始下标
    参数 stop:列表L 的终止下标
    返回值:若能找到,则返回该元素的下标,否则,抛出ValueError 异常

    示例:

    >>> l = ['a', 'b', 'c']
    >>> l.index('b')   # 找到了,返回下标
    1
    >>> l.index('d')   # 没找到,抛出 ValueError 异常
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: 'd' is not in list
    

    (完。)


    推荐阅读:

    Python 简明教程 --- 5,Python 表达式与运算符

    Python 简明教程 --- 6,Python 控制流

    Python 简明教程 --- 7,Python 字符串

    Python 简明教程 --- 8,Python 字符串函数

    Python 简明教程 --- 9,Python 编码


    欢迎关注作者公众号,获取更多技术干货。

    码农充电站pro

  • 相关阅读:
    稳扎稳打Silverlight(47) 4.0UI之操作剪切板, 隐式样式, CompositeTransform, 拖放外部文件到程序中
    返璞归真 asp.net mvc (9) asp.net mvc 3.0 新特性之 View(Razor)
    返璞归真 asp.net mvc (6) asp.net mvc 2.0 新特性
    稳扎稳打Silverlight(48) 4.0其它之打印, 动态绑定, 增强的导航系统, 杂七杂八
    精进不休 .NET 4.0 (9) ADO.NET Entity Framework 4.1 之 Code First
    稳扎稳打Silverlight(42) 4.0控件之Viewbox, RichTextBox
    稳扎稳打Silverlight(53) 4.0通信之对WCF NetTcpBinding的支持, 在Socket通信中通过HTTP检索策略文件, HTTP请求中的ClientHttp和BrowserHttp
    稳扎稳打 Silverlight 4.0 系列文章索引
    稳扎稳打Silverlight(54) 4.0通信之对UDP协议的支持: 通过 UdpAnySourceMulticastClient 实现 ASM(Any Source Multicast),即“任意源多播”
    返璞归真 asp.net mvc (8) asp.net mvc 3.0 新特性之 Model
  • 原文地址:https://www.cnblogs.com/codeshell/p/12967771.html
Copyright © 2011-2022 走看看