zoukankan      html  css  js  c++  java
  • 我的Python成长之路---第一天---Python基础(6)---2015年12月26日(雾霾)

        七、列表——list

        Python的列表是一种内置的数据类型,是由Python的基本数据类型组成的有序的集合。有点类似C语言的数组,但与数组不同的是,Python在定义列表的时候不用指定列表的容积(长度),可根据需要任意扩展,另外列表的内的元素可以是不同的数据类型,当然既然是任何数据类型,当然也包括另一个列表也就是嵌套。Python中列表使用中括号[]括起来,例如[1,2,True,'ABC',[5,'678']].

        1、列表的切片

        通字符串一样列表也支持切片操作,例如我们有一个列表A_list = ['Michael', 'Bob', 'Tracy']

        1)列表中索引号为n的元素(一样是从0开始计数哦)

    >>> A_list[1]
    'Bob'

        2)从第m个元素到第n个元素

    >>> A_list[0:2]
    ['Michael', 'Bob']

        3)从第m个元素到第n个元素,步长为p(也就是每隔p-1个字符)

    >>> A_list[0:3:2]
    ['Michael', 'Tracy']

         说明:同字符串一样,列表的切片同样省略索引号和支持复数,用法与字符串一样,这里就不复述了。

         2、列表的内置方法

         Python中查看一个对象的内置方法和属性可以使用内置的dir方法,比如我们查看列表A_list的方法和属性

    >>> dir(A_list)
    ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__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']

         常用的方法有:

    >>> A_list = ['Michael', 'Bob', 'Tracy']
    >>> A_list.append('Peter') # 在末尾插入一个新的元素
    >>> A_list
    ['Michael', 'Bob', 'Tracy', 'Peter']
    >>> A_list.insert(1, 'Jack') # 在指定位置(索引号)插入一个新的元素
    >>> A_list
    ['Michael', 'Jack', 'Bob', 'Tracy', 'Peter']
    >>> A_list.pop() # 删除最后一个元素,并返回该元素,如果列表已经为空在执行pop方法会报错,类似IndexError: pop from empty list
    'Peter'
    >>> A_list
    ['Michael', 'Jack', 'Bob', 'Tracy']
    >>> A_list.remove('Jack') # 删除指定的元素,注意这里接受的参数是元素,而不是索引号,如果元素不存在则报错,类似ValueError: list.remove(x): x not in list
    >>> A_list
    ['Michael', 'Bob', 'Tracy']
    >>> A_list.index('Bob') # 返回指定元素所在位置的索引号,如果元素不存在则报错ValueError: 'dafda' is not in list
    1
    >>> A_list.sort() # 排序,注意Python3已经不支持不同类型数据的排序,如果列表内元素的类型不一致,就会报错,类似TypeError: unorderable types: str() < list()
    >>> A_list
    ['Bob', 'Michael', 'Tracy']
    >>> A_list.reverse() # 翻转列表的元素位置
    >>> A_list
    ['Tracy', 'Michael', 'Bob']
    >>> B_list = ['Jack','Peter']
    >>> A_list.extend(B_list) # 将另一个列表的每一个元素追加到列表的末尾,注意与append不同,append会把另一列表当成一个元素追加到列表的末尾
    >>> A_list
    ['Tracy', 'Michael', 'Bob', 'Jack', 'Peter']
    >>> A_list.count('Bob') # 返回列表的某一个元素重复的个数,如果元素不存在返回0,不会报错
    1

        我们上面说index方法和remove方法只能返回或删除第一查找到的元素,如果一个列表中重复出现多次我们如何处理呢,这时候我们可以这么处理

        全部删除:原理就是先求出出现了多少次,然后通过循环删除

    #!/usr/bin/env python
    # coding:utf-8
    name_list = ['Michael', 'Jack', 'Bob', 'Tracy', 'Peter', 'Jack'] # 这里有两'Jack'
    # 返回所有'Jack'的索引
    for i in range(name_list.count('Jack')):
        name_list.remove('Jack')
    print(name_list)

        查询所有的索引号,原理就是先求出一共出现了多少次,第一次直接查找返回说因,从第二次开始开始,从上一次的索引位置的下一个位置进行切片,然后再进行查,那么这一次的索引号就是上一次的索引号+加上本次的索引+1,依次类推

    #!/usr/bin/env python
    # coding:utf-8
    name_list = ['Jack', 'Michael', 'Jack', 'Bob', 'Tracy', 'Peter', 'Jack'] # 这里有三个'Jack'
    # 返回所有'Jack'的索引
    index_num = 0 # 定义初始索引号
    index_list = [] # 定义用来存储索引号的列表
    for i in range(name_list.count('Jack')):
        if i != 0: # i不等于0也就是说不是第一次查找
            index_num = name_list[index_num+1:].index('Jack') + index_num + 1
        else: # 否则就是第一次查找,直接返回索引号即可
            index_num = name_list.index('Jack')
        index_list.append(index_num) # 将索引号追加到index_list中
    print(index_list)

        八、元祖——tuple

        元祖和列表非常类似,但是元祖一旦初始化就不能修改,所以元祖除了可以切片外没有列表的那些方法。

        但是我们所说的元祖的不可变不是绝对的,也可以是“可变的”,那就是元祖里的元素是其他可变的数据类型,如列表等

        例如:t = ('a', 'b', ['A', 'B'])

        注意里面列表,我们要对这个列表进行一些修改操作:

    >>> t = ('a', 'b', ['A', 'B'])
    >>> t[2][0] = 'X' 
    >>> t
    ('a', 'b', ['X', 'B'])
    >>> t[2].append('C')
    >>> t
    ('a', 'b', ['X', 'B', 'C'])

        可以看出如果元祖里有可变数据类型的元素,那么该元素是依然可以修改的,这使得元祖貌似被修改了,其实并没有修改,因为Python一切皆指针。

        

        

  • 相关阅读:
    服务部署 RPC vs RESTful
    模拟浏览器之从 Selenium 到splinter
    windows程序设计 vs2012 新建win32项目
    ubuntu python 安装numpy,scipy.pandas.....
    vmvare 将主机的文件复制到虚拟机系统中 安装WMware tools
    ubuntu 修改root密码
    python 定义类 简单使用
    python 定义函数 两个文件调用函数
    python 定义函数 调用函数
    python windows 安装gensim
  • 原文地址:https://www.cnblogs.com/zhangxiaxuan/p/5085430.html
Copyright © 2011-2022 走看看