Python基础教程学习笔记 第二章 列表和元组

1、序列中元素的索引:

  第一个元素索引是0,第二个是1,依次递增
  最后一个元素索引是-1,倒数第二个是-2,依次递减

2、序列(Sequence)的种类:

  列表(list)、元组(tuple)、字符串(string)、Unicode 字符串、buffer对象、xrange对象

3、列表和元组的区别:列表可以进行修改,但是元组不行

4、tuple常作为字典的键

5、序列都可以进行以下操作:

  索引(indexing)、分片(sliceing)、加(adding)、乘(multiplying)、以及检查元素是否属于序列(in)、最大值(max)、最小值(min)、长度(len)、迭代器(iterator)等操作

6、序列中也可以包含其他的序列

7、索引

  7.1、第一个元素的索引是0,第二个是1,依次递增;最后一个元素的索引是-1,倒数第二个是-2,依次递减

  7.2、对于序列可以直接进行索引,而不是一定非要通过变量进行索引,如:"Hello"[0],得到H

  7.3、如果一个函数返回一个序列,可直接对结果进行索引而得到指定的元素

8、分片

  访问一定范围内的元素

  [start:end:step]:从start索引开始,每隔step个元素取一个元素,但是不包括end元素

  [start:end]:从start索引开始,每隔1个元素取一个元素,但是不包括end元素

  [start:]:从start索引开始取到结尾,每隔1个元素取一个元素

  [:end]:从0开始,每隔1个元素取一个元素,但是不包括end元素

  [:]:取所有元素

  [::step]:从0开始取到结尾,每隔step个元素取一个元素

  [:end:step]:从0开始,每隔step个元素取一个元素,取到end前一个元素

  [start::step]:从start开始,取到结尾,步长step

  [start:start]:取得start元素

  8.1、step > 0 从前往后取;step < 0 从后往前取;step 不能为0

9、相同类型的序列才能相加,第二个序列追加到第一个序列后面,生成新的序列副本

  a = [1,2,3,4,5]

  b = [4,5,6,7,8]

  a + b的结果是:[1, 2, 3, 4, 5, 4, 5, 6, 7, 8];a、b的内容不发生改变

10、序列乘以一个数字N,大小扩展为现在N倍,内容重复N倍,如:

  a = [1,2,3,4,5]

  a * 5的结果是:[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5];a的内容不发生改变

11、可以使用in运算符一个对象是否属于一个序列,返回True或者False,例如:

  element1 = 1

  element2 = 'c'

  element3 = "LLO"

  sequence1 = [1,2,3,4,5]

  sequence2 = "abcdefg"

  sequence3 = "HELLOWORLD"

  --------

  >>> element1 in sequence1
  True

  >>> element2 in sequence2
  True

  #下面这个操作在2.3以上的版本才支持

  >>> element3 in sequence3
  True

12、求最大值、最小值、长度的函数分别是:max()、min()、len()

13、列表

  13.1、list函数适用于所有的类型的序列,而不仅仅是字符串:lst = list("Helloworld")

  13.2、"".join(lst)将lst转换为字符串

  13.3、元素赋值:x=[1,2,3,4,5],x[0] = 5;要赋值的元素必须存在,否则报错;赋值之后将修改指定的元素

  13.4、删除元素:names=["alice","beth","ceil","dee-dee","earl"];del names[2];删除指定下标的元素;删除之后将影响列表元素

  13.5、分片赋值:name = list("perl")

    >>> name = list("perl")
  >>> name
    ['p', 'e', 'r', 'l']
  >>> name[2:] = "ar"
  >>> name
    ['p', 'e', 'a', 'r']
  >>> name[2:] = "HELLO WORLD"
  >>> name
    ['p', 'e', 'H', 'E', 'L', 'L', 'O', ' ', 'W', 'O', 'R', 'L', 'D']
  >>> name[1:1] = list("12345")
  >>> name
    ['p', '1', '2', '3', '4', '5', 'e', 'H', 'E', 'L', 'L', 'O', ' ', 'W', 'O', 'R', 'L', 'D']
  >>> name[5:] = []
  >>> name
    ['p', '1', '2', '3', '4']

  13.6、列表方法:对象.方法(参数)

    13.6.1、append():在列表末尾添加元素你,会修改调用者并且直接返回

      >>> a = list("12345")
      >>> a
      ['1', '2', '3', '4', '5']
      >>> a.append(6)
      >>> a
      ['1', '2', '3', '4', '5', 6]

    13.6.2、count():返回列表的指定元素的个数

      >>> a = list("HelloWorld")
      >>> a.count('l')
      3

    13.6.3、extend():追加一个列表到调用者的后面并修改调用者内容

      >>> a = list("Hello ")
      >>> b = list("World")
      >>> a.extend(b)
      >>> a
      ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']

    13.6.4、index():指定元素在list中第一次出现的索引,如果元素不存在,会出现错误

      >>> a = list("Hello")
      >>> a.index("l")
      2

    13.6.5、insert():插入对象到列表中

      >>> a = list("Hello")
      >>> a.insert(3,"XINYE")
      >>> a
      ['H', 'e', 'l', 'XINYE', 'l', 'o']

    13.6.6、pop():默认弹出最后一个元素,指定一个参数时,删除指定索引的元素,并返回

      >>> a = list("Hello")
      >>> a.pop()
      'o'
      >>> a.pop(1)
      'e'
      >>> a
      ['H', 'l', 'l']

      pop()方法是唯一一个能修改列表并且返回列表元素的方法

    13.6.7、常见的数据结构:栈

      FIFO:First Input First Output,先入先出:入栈——insert(0,元素);出栈——pop()

      LIFO:Last Input First Output,后入先出:入栈——append();出栈——pop(0)

    13.6.8、remove():删除列表中第一个匹配项,会修改调用者,但没有返回值,如果删除的元素不存在,则会报错

      >>> a = list("HelloWorld")
      >>> a
      ['H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd']
      >>> a.remove("a")
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      ValueError: list.remove(x): x not in list
      >>> a.remove("e")
      >>> a
      ['H', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd']

    13.6.9、reverse():反向存放列表,会修改调用者

      >>> a = list("Hello")
      >>> a.reverse()
      >>> a
      ['o', 'l', 'l', 'e', 'H']

    13.6.10、reversed()函数:反向存储序列,生成副本,不会修改参数内容,但是不会返回列表,而是返回迭代器,使用list()函数可以把迭代器转化为list:list(reversed(list))

      >>> a = list("Hello")
      >>> reversed(a)
      <list_reverseiterator object at 0x0000000002C2F0F0>
      >>> a
      ['H', 'e', 'l', 'l', 'o']
      >>> list(reversed(a))
      ['o', 'l', 'l', 'e', 'H']

  13.6.11、sort():改变被排序里诶包,但是不会返回值

    >>> a = [4,6,2,1,7,9]
    >>> a.sort()
    >>> a
    [1, 2, 4, 6, 7, 9]

  如果不想改变a的内容,只想得到一个副本的排序结果,则需要先生成一个a的副本,然后对这个副本进行排序(副本的生成不能直接赋值哦,因为赋值实际上引用的是同一个对象,只能按照以下的方式):

    >>> a = list("hello world")
    >>> b = a[:]
    >>> b.sort()
    >>> a
    ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
    >>> b
    [' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']

  13.6.12、sorted()函数:不修改参数的内容,返回排序的副本

    >>> a = list("hello world")
    >>> b = sorted(a)
    >>> a
    ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
    >>> b
    [' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']

  13.6.13、高级排序:按照特定的方式进行排序

    a.按照compare(x,y)的形式自定义一个函数进行排序,这个自定义函数在x<y的时候返回-1;需要的时候返回0;x>y的时候返回1;

    默认的系统提供了一个cmp的函数,用来进行排序,遵循在x<y的时候返回-1;需要的时候返回0;x>y的时候返回1的规则(3.0以上不再支持这个内置函数)

    b.sort方法支持两个可选参数key和reverse

    key制定一个排序的函数和cmp类似,但是这个函数并不会直接用来确定对象的大小,而是为每一个元素创建一个键,然后根据键来排序,例如要按照元素的长度来进行排序,则可以使用len函数来指定

      r = ["aardvark","abalone","acme","add","aerate"]

      r.sort(key=len)

      排序之后r的内容为:['add', 'acme', 'aerate', 'abalone', 'aardvark']

    reverse的值为True或者False,来指明是否进行反序排列

      >>> x = [2,8,4,6,5,7,9]
      >>> x.sort(reverse=True)
      >>> x
      [9, 8, 7, 6, 5, 4, 2]

  以上这些都可以通过sorted()函数进行替换

14、元组:不可改变的序列。如果用逗号分隔开一些值就创建了一个元组,一般都用圆括号括起来

  >>> 1,2,3,4,5
  (1, 2, 3, 4, 5)
  >>> a = 1,2,3
  >>> a
  (1, 2, 3)
  >>> a = (1,)
  >>> a
  (1,)

如果想要创建一个非空元组,必须使用逗号,哪怕只有一个元素;若要创建空的元组,则直接使用一个()

tuple([1,2,3])、tuple("123")、tuple((1,2,3))把其他的序列转换为元组

元组可以作为映射的键,但是list却不行,这个也是元组的主要应用场合

时间: 2024-09-12 05:59:00

Python基础教程学习笔记 第二章 列表和元组的相关文章

Python基础教程学习笔记 第二章 列表和元组_Android

1.序列中元素的索引: 第一个元素索引是0,第二个是1,依次递增 最后一个元素索引是-1,倒数第二个是-2,依次递减 2.序列(Sequence)的种类: 列表(list).元组(tuple).字符串(string).Unicode 字符串.buffer对象.xrange对象 3.列表和元组的区别:列表可以进行修改,但是元组不行 4.tuple常作为字典的键 5.序列都可以进行以下操作: 索引(indexing).分片(sliceing).加(adding).乘(multiplying).以及检

Python基础教程学习笔记 第一章 基础知识_Android

1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入"python -V"查看版本号,注意V是大写字母,这条命令是Windows命令,而不是python shell的命令 3.让解释器只执行普通的除法运算:from __feture__ import division 4.执行整除运算的运算符:// 5.取幂运算符:2**4 相当于2的4次方,-2**4相当于2的4次方之后取负,因为

python学习笔记第二章:安装python

记得上次写python的学习笔记是三个月以前了,期间看过,也放下过,这次要坚持下来,一鼓作气,吃下python. 本文内容主要是根据<Python 简明教程>和自己的一些理解去写的,有问题,还请指出. 一.Linux 下安装 如果你使用的是linux操作系统,那么恭喜你,你基本上可以不用去安装python,因为大多数linux的操作系统在安装系统的时候就已经默认安装了python. 要测试你的系统是否已经安装了python,可以执行如下命令 python -v 显示如下的python版本信息,

【PMP】Head First PMP 学习笔记 第二章 组织、约束和项目

第二章 组织.约束和项目 如果你希望正确地完成工作--最好有一个正确的组织. 项目联络人 项目联络人(project expediter),只是记录项目的进展情况,但是没有权利对项目做任何决策.他可能参与项目,但是并不管理任何事务. 不同类型的组织项目 职能型 项目经理的决策需要和职能经理确认 项目经理作为职能经理的助手,协助职能经理完成工作 项目经理大部分时间都用于行政任务,通常只有部分时间投入到项目管理中 在职能型组织中往往会有项目联络人 矩阵型 弱矩阵型 项目经理有一些经理有一些权利,但是

简明Python教程学习笔记_4_数据结构

在Python中有三种内建的数据结构--列表.元组和字典. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了.只不过在你的购物表上,可能每样东西都独自占有一行,而在Python中,你在每个项目之间用逗号分割. 列表中的项目应该包括在方括号中,这样Python就知道你是在指明一个列表.一旦你创建了一个列表,你可以添加.删除或是搜索列表中的项目.由于你可以增加或删除项目,我们说列表是可变的 数据类

整理Javascript基础入门学习笔记_javascript技巧

了解什么是变量? 变量是用于存储信息的容器 变量的声明 语法: var  变量名变量名 = 值; 变量要先声明再赋值 变量可以重复赋值变量的命名规则 变量必须以字母开头: 变量也能以$和_符号开头(不过我们不推荐这么做): 变量名称对大小写敏感(a和A是不同的变量). 1.语句 语句以一个分号结尾:如果省略分号,则由解析器确定语句的结尾. 有个好的编码习惯,都要以 ; 结尾 2.数据类型 在JavaScript中,一段信息就是一个值(value).值有不同的类型,大家最熟悉的类型是数字.字符串(

Python os模块学习笔记

  这篇文章主要介绍了Python os模块学习笔记,本文总结了OS模块的常用方法.实用方法,并给出了两个使用实例,需要的朋友可以参考下 一.os模块概述 Python os模块包含普遍的操作系统功能.例如文件的复制.创建.修改.删除文件及文件夹... 二.常用方法 1.os.listdir() 返回指定目录下的所有文件和目录名. 2.os.remove() 删除一个文件. 3.os.system() 运行shell命令. 4.os.path.split() 函数返回一个路径的目录名和文件名 5

Python基础教程

# ****Python基础教程**** 目前,Python 作为一门当前最流行编程语言之一,网上各式各样学习教程非常,笔者因为起步较早,主要通过书籍学习Python2 ,目前Python正在Python2向Python3的方向迁移. 国内关于Python书籍资源更新太慢, 若英语水平不错,并且愿意学习Python3,最好通过Python官方文档进行学习. 若英语水平较差,并且仅想对Python3的语法进行基本了解.笔者推荐网站:[菜鸟教程](http://www.runoob.com/pyth

Python基础教程之字符串

1 基本字符串操作 2 字符串格式化:精简版 2.1 用字符串格式化操作符 2.2 用string的Template格式化字符串 3 字符串格式化:完整版 3.1 转换说明符 3.2 简单转换 3.3 字段宽度和精度 3.4 符号,对齐和 0 填充 4 字符串方法 4.1 find 4.2 join 4.3 lower 4.4 replace 4.5 split 4.6 strip 4.7 translate 1 基本字符串操作 说明:字符串也是序列的一种,所以分片,乘法,索引,求长度,最大,