zoukankan      html  css  js  c++  java
  • python_基础_4__列表_元组_字典_集合

    在python中,列表,元组,字典,集合比较强大。它对于数据组织提供方便。特别是这些序列处理方法,比C方便快捷。


    序列

    序列是最基本数据结构之一,序列的每个元素都可以是任何类型(也可以是序列)。

    每个元素被分配一个序号,即元素位置(也称索引)。第一个序号规定为0,第二为1.……

    python中的序列包括六种:

    列表,元组,字符串,Unicode字符串,buffer对象和xrange对象, 常用的是前三种。

    列表用中括号[],元组使用圆括号().

    列表是可以修改的,而元组是不可以修改的。

    >>> lsa = [1,2,3]

    >>> lsa

    ... [1,2,3]

    >>> lsa[0] = 2

    >>> lsa

    ... [2,2,3]

    >>> tup = (1,2,3)

    >>> tup

    ... (1,2,3)

    >>> tup[0]       #注意引用元组中的元素时,下标也是要用中括号[],而不是圆括号()

    ... 1

    >>> tup[0] = 2     #想给元组的第一个元素重赋值,修改它,会提示出错

    Traceback(most rcent call last):          #出错信息...

       File"<stdin>", line 1, in <module>

    TypeError: 'tuple' object does not support item assignment

    序列的基本操作:

    序列有六种,它们之间有些通用操作,是最基本、最常见的。它们是:

    • 索引
    • 切片
    • 序列加
    • 序列乘
    • in
    • len、 max、 min

    1 索引: 序列[编号]

    序列中每个元素都有编号(从0开始),元素可以通过编号来进行访问。

    想读取倒数第几个元素时,最后一个元素的编号是-1, 倒数第二个是-2

    >>> a = [1,2,3]

    >>> a[0]

    1

    >>> a[-1]

    3

    2 切片: 序列[ 开始编号 : 结束编号的后一个 : 步长 ]

    使用索引每次读取一个值,也可以用切片读取序列中的一段值。默认步长是1

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

    >>> a[1:3]

    ... [2,3]      #索引号是3的元素(4)并不在内

    >>> a[1:-1]    #最后一个不包括在内

    ... [2,3,4]

    >>> a[1:]      #省略结束编号,表示起始编号到最后所有

    ... [2,3,4,5]

    >>> a[ :-1]      #省略起始编号,表示从编号[0]开始

    ... [1,2,3,4]

    >>> a[:]      #前后都没给定,表示整个序列

    ... [1,2,3,4,5]

    >>> a[0:4:2]    #从第一个到第四(编号3)个,步长为2

    ... [2, 4]

    #使用切片得到结果还是一个序列,哪怕是只有一个元素:

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

    >>> a[2:3]

    ... [3]            #3的外面有中括号,说明它是一个列表,而不只是一个数值

    >>> type(a[2:3])      #用type()函数返回a[2:3]的类型

    ... < type 'list'>        #返回的类型是'list',即列表

     

    3 序列加:  序列 + 序列 

    可以用‘+’把两个相同类型的序列连接在一起。

    >>> a = [1,2,3]

    >>> b = [4,5,6]

    >>> a + b

    ... [1,2,3,4,5,6]

    前后两个序列类型要相同,否则出错:

    >>> a = [1,2,3]      #列表

    >>> b = (4,5,6)      #元组

    报错...

    4 序列乘: 序列 * n

    可以用‘*’例序列重复n次,得到一个新的序列,n表示重复的次数:

    >>> a = [1,2,3]

    >>> a *3

    ... [1,2,3,1,2,3,1,2,3]

    5 in: 元素 in 序列

    可以使用“in”检查某个元素是否在序列中, 返回布尔值TrueFalse

    >>> a = [1, 2, 3]

    >>> 1 in a

    ... True

    >>> 5 in a

    ... False

    6 len、max、 min : len(序列), max(序列), min(序列)

    len, max, min是python内建的函数,分别返回序列的长度,最大的元素,最小的元素(值):

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

    >>> len(a)

    ... 5

    >>> max(a)

    ... 5

    >>> min(a)

    ... 1

    >>> max(1, 2,55)    #不一定要是序列名,可以用多个数字作为参数

    ... 2.55

    >>> min(2.4, -1) 

    ... -1

    回上部


    列表

    列表的创建: [], 例: >>> a = [1,2,3]

    单个元素的修改: >>> a[0] = 2

    切片修改:

    使用索引可以找到一个元素,并可以修改这个元素的值,用切片可以找到一段元素,并可以修改一段元素的值。

    >>> list_a = [1,2,3,4]

    >>> list_a[0:2] = [5,6]

    >>> list_a

    ... [5,6,3,4]

    python中可以使用不定长的序列来修改选中的切片。这意味着把一段长度为0的序列赋值给一段长度不为0的切片等于删除,把长度不为0的序列赋值给长度为0的切片等于添加。

    >>> list_a = [1,2,3,4]

    >>> list_a[1:3] = []            #相当于删除1,2号元素

    >>> list_a

    ...[1,4]

    >>> list_a[0:0] = [999, 888]      #相当于添加两个元素

    >>> list_a

    ...[999, 888, 1, 4]

    >>> list_a[1:3] = list("hello")      #段替换

    >>> list_a

    ... [999, 'h', 'e', 'l', 'l', 'o', 4]

    元素删除

    除了用长度为0的序列来替换要删除的一段外,还可以用del语句,与修改相类似,也可以删除多个元素。例:

    >>> list_a = [1,2,3,4]

    >>> del list_a[0]         #删除一个元素

    >>> list_a

    ...[2,3,4]

    >>> del list_a[0:2]         #删除一段元素

    >>> list_a

    ...[4]

     

    4.3.3 列表法

    对象.方法(参数)

    1 append方法:   在一个列表后面追加一个元素:

    >>> list_a = [1,2,3]

    >>> list_a.append(4)         #在列表后面追加一个元素4

    >>> list_a

    ...[1,2,3,4]

    2 count方法:   查看某个元素在列表中出现的次数:

    >>> list_a = [1,2,3,4,1,2,1]

    >>> list_a.count(1)

    ...3

    3 extend方法:   用其他列表拓展原有的列表,其他列表的元素被添加到原有列表后面:

    >>> list_a = [1,2,3]

    >>> list_b = [4,5,6]

    >>> list_a.extend(list_b)

    >>> list_a

    ...[1,2,3,4,5,6]

    4 index方法:   返回某个元素的索引,如果元素不存在,会引发异常:

    >>> list_a = [1,2,3,88,4,5,6]

    >>> list_a.index(88)         #返回88的索引

    ...3

    >>> list_a.index(99)         #99不存在,返回错误

    ...显示出错信息...

    5 insert方法:   在序列的某个位置插入一个元素:

    >>> list_a = [1,2,3,4]

    >>> list_a.insert(2, "Hello")         #在2号位置插入'Hello'

    >>> list_a

    ...[1,2,'Hello', 3,4]         #插入不是替换,所以元素3还在

    >>> list_a.insert(10, 'world')      #10号位置不存在,'world'直接插到序列末

    >>> list_a

    ...[1,2,'Hello',3,4,'world']

    6 pop方法:   移除列表某个位置的元素并返回该元素,如果没指定要移除元素的索引,pop方法默认移除最后一个元素。

    >>> list_a = [1,2,3,4]

    >>> list_a.pop()         #移除最后一个元素

    ...4

    >>> list_a

    ...[1,2,3]

    >>> list_a.pop(0)      #移除0号元素

    ...1

    >>> list_a

    ...[2,3]

    7 remove方法: 移除序列中第一个与参数匹配的元素, 注意是第一个而不是所有:

    >>> list_a = [1,2,88,3,4,88,5,6]

    >>> list_a.remove(88)         #移除第一个88

    >>> list_a

    ...[1,2,3,4,88,5,6]         #第二个88没有被删除

    8 reverse方法:   将列表改为倒序:

    >>> list_a = [1,2,3,4]

    >>> list_a.reverse()

    >>> list_a

    ...[4,3,2,1]

    9 sort方法:   对列表进行排序,默认为升序:

    >>> list_a = [4,6,2,7,1,8]

    >>> list_a.sort()

    >>> list_a

    ...[1,2,4,6,7,8]

    sort可以传入其它参数,它们是key, cmp, reverse

    key和cmp参数都是接受一个函数,注意是函数!这两个函数在比较前调用,作用于元素上返回一个结果,元素进行比较时根据这个结果进行。

    其中key是带一个参数的函数。用来为每个元素提取比较值。例:

    >>> names = ['Judy', 'Peler', 'Perkins']

    >>> names.sort(key=len)   #按名字长度排序,注意len函数不用输入圆括号

    >>> names

    ...['Judy', 'Peler', 'Perkins']

    cmp是带两个参数的比较函数,形式为cmp(e1, e2), 返回.值为负时代表e1<e2, 为0时代表e1==e2, 为正是代表e1>e2。但这个结果如果用到排序上,我现在还不清楚。以后用到再说。

    reverse接收一个bool型变量, 为True时,将序列反序。

    key, cmp默认值为None, reverse的默认值为False.

    如上例中,改成:

    >>> names.sort(key=len, reverse=True)         #根据元素长度排序,倒序

    >>> names

    ...['Perkins', 'Peler', 'Judy']

    回上部

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    css选择器分类及运用
    盒模型的三大类简介
    html学习总结
    html基础知识
    iOS UITextFeild获取高亮部分的长度
    iOS问题:pch not found
    对KVC和KVO的理解
    数据库设计三范式
    Hibernate中解决No Hibernate Session bound to thread问题
    call by value 和 call by reference 的区别
  • 原文地址:https://www.cnblogs.com/cnyxj/p/6381525.html
Copyright © 2011-2022 走看看