Python(四)列表、元组、字典

2019-05-20  本文已影响0人  晓看云

目录:

1.列表(List)

2.列表扩展

一、列表

1.列表(List)

(1)List是处理一组有序项目的数据结构;

(2)List是Python中使用最频繁的数据类型;

(3)列表可以完成大多数数据集合类的数据结构实现;

    支持字符、数字、字符串甚至还可以嵌套列表、元组、字典等

(4)列表用[ ]表示,内部元素见用逗号隔开.

2.创建列表

(1)#创建空列表

        list1 = [  ]

        list1

(2)创建非空列表

        list2 =[1, 'vd' ,12.3 ,[1,2,'sd']]

        list2

3.访问列表

(1)与字符串的索引一样,列表索引从0开始

(2)列表可以进行截取、组合等

(3)使用下表索引来访问列表中的值,也可以使用方括号的形式截取列表

        list1=['physics','chemistry',1997,2000];

        print"list1[0]:",list1[0]

4.更新列表

(1)可以对列表数据进行修改或更新;

(2)可以使用append( )方法来添加新的列表项;

(3)可以直接给列表赋值;

5.删除列表

(1)使用del语句来删除列表的元素或整个列表;

(2)使用remove( )移除列表中的元素

6.列表运算符

(1)长度,len([1,2,3]),3

(2)组合,[1,2,3]+[4,5,6],[1,2,3,4,5,6]

(3)重复,['Hi!']*4,['Hi!','Hi!','Hi!','Hi!']

(4)元素是否存在于列表中,3 in [1,2,3],True

(5)迭代,for x in [1,2,3]:print x,1 2,3

7.列表截取

python的列表截取与字符串操作类似,均使用切片完成

L = ['spam','Spam','SPAM!']

L[2]='SPAM!'  #读取列表中第三个元素

L[-2]='Spam'  #读取列表中倒数第二个元素

L[1:]=['Spam','SPAM!']  #从第二个元素开始截取列表

8.列表函数&方法(对所有序列字符串、列表、元组都有用)

(1)cmp(list1,list2)   #比较俩个列表的元素

(2)len(list)  #列表元素个数

(3)max(list)  #返回列表元素最大值

(4)min(list)  #返回列表元素最小值

(5)list(seq)  #将元组/字符串转换为列表

9.列表操作函数(仅对列表有用)

(1)append(obj) 在列表末尾添加新的对象

(2)insert(index,obj)将对象插入列表

(3)pop(index)移除列表中的一个元素(默认是最后一个元素),并且返回该元素的值

(4)remove(obj)移除列表中的某个值的第一个匹配想,一次删除一个

(5)index(obj)从列表中找出某个值第一个匹配项的索引位置,如未找到就会抛出异常。

(6)count(obj)统计某个元素在列表中出现的次数

(7)extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

(8)reverse( )反向列表中元素

(9)sort([func]) 对原列表进行排序,根据ASCII码从大到小进行排序

10、sort函数

按照使用元组的第一个元素大小比较来实现list的排序

11、自动生成列表

List1 = range(10)

List1

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

List2 = range(1,10)

List2 

[1,2,3,4,5,6,7,8,9]

List3 = range(1,10,2)

List3

[1,3,5,7,9]

12、列表复制

引用复制的list,它们的内存地址是相同的,修改任何一个list,另一个list中的元素的值都会被改变

非引用list,它们的内存地址不一样,所以修改任何一个list都不会影响另一个list

list1 [0,1,2,3,4,5,6,7,8,9]

List2 =list1

复制([:]模式)指完全复制一个新的对象

13、列表的增删改查遍历的综合操作

二、列表扩展

1.迭代器

    通过iter( )方法获得了list的迭代器对象,然后就可以通过next( )方法来访问list中的元素啦。当容器中没有可以访问的元素后,next( )方法将会抛出一个StopIteration异常终止迭代器。

2.自定义的迭代器

3.生成器

    如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环,一边计算的机制,成为生成器(Generator).

4.迭代器和生成器的区别

    通过实现迭代器协议对应的__iter__( )和next( )方法,可以自定义迭代器类型。对于可迭代对象,for语句可以通过iter()获取迭代器,并且通过next()方法获得容器的下一个元素。

    生成器是一种特殊的迭代器,内部支持了生成器协议,不需要明确定义__iter__( )和next( )方法

    生成器通过生成器函数产生,生成器函数可以通过常规的def语句来定义,但是不用return返回,而使用yield一次返回一个结果。

5.枚举

Demo 

    For i, value in enumerate([‘A’,’B’,’C’]):

        Print I,value

6.深浅拷贝

Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块。

    (1)copy.copy 浅拷贝 只拷贝副对象,不会拷贝对象的内部的子对象。

    (2)copy.deepcopy 深拷贝 拷贝对象及其子对象

7.浅拷贝的内存

8.深拷贝的内存

9.通过list实现堆栈

10.通过list实现队列

三、元组

1、创建元组

    Tu = ( )

    Tu

    创建只有一个元素的元组时,元素后面的逗号是不能省略的。

2、访问元组

    元组可以使用下标索引来访问元组中的值。

3、修改元组

    元组中的元素值是不允许修改的,元组中的可变对象可以修改,可以对元组进行连接组合

4、删除元组

5、元组运算符

6、元组的索引、截取

7、元组的内置函数

8、元组的遍历和查找

三、字典

1、定义方法

Dict = { }

2、访问方法—访问字典的值

Dict = {’Name’:’Zara’,’Age’:7,’Class’:’First’}

Print “dict[’Name’]:”,

3、修改字典中的值

4、删除字典中的值

5、字典的key

        字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

        两个重要的点需要记住:

        (1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个键就会被记住

        (2)键必须不可变,所以可以用数、字符串或元组充当,所以用列表就不行。

6、内置函数&方法

    (1)cmp(dict1,dict2) 比较两个字典元素

    (2)len(dict) 计算字典元素个数,即键的总数

    (3)str(dict)输入字典可打印的字符串表示

    (4)type(variable)返回输入的变量类型,如果变量是字典就返回字典类型

7、字典的排序

8、字典内置的常用函数

四、序列

1.列表、元组和字符串都是序列。序列的两个主要特点是索引操作符和切片操作符。

2.切片操作符是序列名后面跟一个方括号,方括号中有一对可选的数字,并且用冒号分隔。

3.切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片结束位置,但不包括这个位置(如:list[2:5])。

    如果切片时,不指定第一个数,Python就会从序列的首页位置开始(如list[:5]).

    如切片时,不指定结束位置,Python就会停止在序列尾。(如:list[3:])

上一篇下一篇

猜你喜欢

热点阅读