博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我的Python成长之路---第一天---Python基础(6)---2015年12月26日(雾霾)
阅读量:6688 次
发布时间:2019-06-25

本文共 3488 字,大约阅读时间需要 11 分钟。

    七、列表——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 list1>>> 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-8name_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-8name_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一切皆指针。

    

 

    

 

转载于:https://www.cnblogs.com/zhangxiaxuan/p/5085430.html

你可能感兴趣的文章
针对IE6\7\8\9\10浏览器的CSS hack大全详解
查看>>
C++应用程序性能优化(二)——C++对象模型
查看>>
smarty 中一些方法的使用
查看>>
大型网站技术架构(五)网站高可用架构
查看>>
Maven学习总结(五)——聚合与继承
查看>>
LNMP架构 源码安装nginx+mysql+php+memcache+论坛
查看>>
Linux实用工具
查看>>
Spring学习总结(4)——Spring AOP教程
查看>>
通过JDBC向数据库中存储&读取Blob数据
查看>>
将博客搬至51CTO
查看>>
C++11: CAS
查看>>
我的友情链接
查看>>
pfSense book之证书管理
查看>>
haproxy日志问题解决
查看>>
AFNetWorking 2.0 使用
查看>>
VMware克隆Linux系统后,网络问题解决
查看>>
Linux系统下vsftp服务器搭建(二)
查看>>
Citrix User Profile Management 设定参考
查看>>
网络库性能对比
查看>>
博客开张
查看>>