zoukankan      html  css  js  c++  java
  • 1、Python列表和元组

    接触python有一段时间了,在读书期间接触了好几门语言,但每门都感觉自己是个门外汉,都不精通,工作中总觉得自己的基础自己不牢靠。现在开始将自己学到的知识总结罗列出来,理一理自己的思路,也希望能够和学习python的同学相互交流,共同进步。

    1、数据结构是将数据元素以某种方式组织在一起的数据集合,这些数据元素既可以是数字、字符,也可以是其他类型的数据结构。在python中最基本的数据结构是序列sequence,序列中的每个元素都有一个位置信息与其对应,称这个位置信息为索引。python中最常用的序列为列表和元组,其他的类型还有字符串、Unicode字符串、buffer对象和xrange对象。列表和元组的主要区别是,列表可以修改,元组不可以修改。

    2、序列中的元素可以是任意类型,序列中可以包含其他序列。

    1 >>> test = [23, 'apple', ['banana', 'hello world']]
    2 >>> test
    3 [23, 'apple', ['banana', 'hello world']]

    3、通用序列操作:索引indexing、分片sliceing、加adding、乘multiplying等

    3.1 索引

    序列中的元素都是有编号的,从0开始递增。

    字符串可以看做是字符组成的序列,注意:最后一个元素的编号是-1

    可以直接对返回结果为序列的函数调用直接进行索引。

    1   >>> test = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    2   >>> test[3]
    3  3

    3.2 分片

    分片操作来返回一定范围内的元素,他由两个索引来做为自己的边界,第1个元素是包含在片内的,第2个元素则不包含在分片内。

     1 >>> test = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     2 >>> test[3: 7]
     3 [3, 4, 5, 6]
     4 >>> test[0: -1]
     5 [0, 1, 2, 3, 4, 5, 6, 7, 8]
     6 >>> test[-3: 0]
     7 []
     8 >>> test[-3: 7]
     9 []
    10 >>> test[-3: 9]
    11 [7, 8]
    12 >>> test[0: ]
    13 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    14 >>> test[: 2]
    15 [0, 1]
    16 >>> test[:]
    17 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    注意:只要分片中最左边的索引比最右边的索引晚出现在序列中,输出结果就是一个空序列。

    分片操作在默认情况下的步长为1,成为隐身设置。我们可以显示第设置分片的步长,当步长为负数时,序列从右向左提取数据。

    >>> test[: : 2]
    [0, 2, 4, 6, 8]
    >>> test[0: 10: 2]
    [0, 2, 4, 6, 8]
    >>> test[10: 0: -2]
    [9, 7, 5, 3, 1]

    注意:分片开始点的元素包括在序列当中,结束点的元素不包括在序列当中。

    3.3 序列相加

    注意:列表和字符串是不能够连接在一起的。

    1 >>> [1, 2, 3] + [3, 4, 5]
    2 [1, 2, 3, 3, 4, 5]
    3 >>> 'Hello' + 'World!'
    4 'HelloWorld!'

    3.4 乘法

    1 >>> 'Hello World!' * 5
    2 'Hello World!Hello World!Hello World!Hello World!Hello World!'
    3 >>> [1, 2] * 5
    4 [1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

    3.5 成员资格

    使用in运算符检查一个值是否在序列中。

    1 >>> test = 'hello'
    2 >>> 'h' in test
    3 True
    4 >>> 'llo' in test
    5 True
    6 >>> number = ['one', 'two', 'three']
    7 >>> 'one' in number
    8 True

    3.6 长度,最大值,最小值

    1 >>> number = ['one', 'two', 'three', 'four']
    2 >>> min(number)
    3 'four'
    4 >>> max(number)
    5 'two'
    6 >>> len(number)
    7 4

    4 列表的操作和方法

    4.1 list函数

    可以将任何的序列转化成列表,使用jion()函数能够让其转换回来。

    1 >>> list('Hello')
    2 ['H', 'e', 'l', 'l', 'o']
    3 >>> ''.join(['H', 'e', 'l', 'l', 'o'])
    4 'Hello'

    4.2 基本列表操作

    元素赋值、删除元素、分片赋值

     1 >>> x = [1, 1, 1]
     2 >>> x[1] = 2
     3 >>> x
     4 [1, 2, 1]
     5 >>> del x[1]
     6 >>> x
     7 [1, 1]
     8 >>> x[1:1] = [2, 3, 4]
     9 >>> x
    10 [1, 2, 3, 4, 1]
    11 >>> x[1: ] = [5, 6]
    12 >>> x
    13 [1, 5, 6]
    14 >>> x[:] = []
    15 >>> x
    16 []

    注意:在分片赋值时可以使用与原序列不等长序列将分片替换。

    4.3 列表方法

    方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字。

    4.3.1 append方法:在列表末尾追加新对象。

    4.3.2 count方法:统计某个元素在列表中出现的次数。

    4.3.3 extend方法:在列表的末尾一次性追加另一个序列中的多个值。

    4.3.4 index方法:从列表中获取某个对象第一个匹配项的索引位置。

    4.3.5 insert方法:将对象插入到列表中。

    4.3.6 pop方法:移除列表中的一个元素(默认情况是最后一个),并且返回该元素的值。

    数据结构栈中的入栈和出栈操作可以有pop和append方法来代替,从而实现python对栈的支持。

    4.3.7 remove方法:移除列表中某个值的第一次匹配。

    4.3.8 reverse方法:将列表中的元素反向存储。

    4.3.9 sort方法:用于在原位置对列表进行排序,“原位置排序”意味着改变原来的列表。

    4.4 元组:不可变序列

    创建元组

    1 >>> 1,2,3
    2 (1, 2, 3)

    空元组

    1 >>> ()
    2 ()

    一个值的元组

    1 >>> 2,
    2 (2,)
    3 >>> (2,)
    4 (2,)
    5 >>> (2)
    6 2

    tuple函数:以一个序列做为参数,并将其转化为元组。

    1 >>> tuple([1,2,3])
    2 (1, 2, 3)
    3 >>> tuple('abc')
    4 ('a', 'b', 'c')
    5 >>> tuple((1,2,3))
    6 (1, 2, 3)

    注意:元组只支持创建和访问。

    元组存在的意义:1,元组可以在映射中当做键使用,而列表不可以;2,元组作为很多内建函数和方法的返回值存在,此时必须对元组进行处理。

  • 相关阅读:
    【转载】 Deepmind星际争霸2平台使用第一轮-完成采矿
    【转载】 星际争霸2的AI环境搭建
    【转载】 强化学习(八)价值函数的近似表示与Deep Q-Learning
    【转载】 强化学习在美团“猜你喜欢”的实践
    【转载】 强化学习(七)时序差分离线控制算法Q-Learning
    【转载】 强化学习(六)时序差分在线控制算法SARSA
    【转载】 强化学习(五)用时序差分法(TD)求解
    【转载】 强化学习(四)用蒙特卡罗法(MC)求解
    ubuntu 系统网络突然"网络已禁用"
    健康日志之口腔粘膜----7-13
  • 原文地址:https://www.cnblogs.com/wanghaoran/p/2877427.html
Copyright © 2011-2022 走看看