列表,字典,元组,集合的概念

列表,字典,元组,集合的概念

一.列表

list: 所有元素放在一对方括号中,元素之间使用逗号分隔,其中的元素可以是任意类型

列表是 Python 的内置可变有序序列,是包含若干元素的有序连续内存空间。在形式上,列表的所有元素放在一对方括号“[”和“]”中,相邻元素之间使用逗号分隔开。当列表增加或删除元素时,列表对象自动进行内存的扩展或收缩,从而保证元素之间没有缝隙。Python 列表内存的自动管理可以大幅度减少程序员的负担,但列表的这个特点会涉及列表中大量元素的移动,效率较低,并且对于某些操作可能会导致意外的错误结果。因此,除非确实有必要,否则应尽量从列表尾部进行元素的增加与删除操作,这会大幅度提高列表处理速度。
在 Python 中,同一个列表中元素的类型可以不相同,可以同时包含整数,实数、字符串
等基本类型,也可以是列表、元组、字典、集合以及其他自定义类型的对象。例如:

[1,2,3]
['a','b',['c',2]]
[10, 20, 38,46]
['red flower','blue sky','green leaf']
['Python", 3.14, 5,[10, 20]]
[['file1', 200, 7],['file2', 260, 9]]

都是合法的列表对象。

列表对象常用方法如下所示。除此之外,Python 的很多内置函数和运算符也可以
对列表和其他序列对象进行操作,后面将通过一些案例逐步进行介绍。

1.append(x)

将元素x添加至列表尾部,没有返回值

2.extend(iterable)

将可迭代对象iterable中所有元素添加至列表尾部,没有返回值

3.insert(index,x)

在列表指定位置index处添加元素x,没有返回值

4.remove(x)

在列表中删除首次出现的指定元素,没有返回值

5.pop([index])

删除并返回列表对象指定位置的元素,默认为最后一个元素

6.clear()

删除列表中所有元素,但保留列表对象,没有返回值

7.index(x)

返回第一个值为x的元素的下标,若不存在值为x的元素,则抛出异常

8.court(x)

返回指定元素x在列表中的出现次数

二.字典

dictionary: 所有元素放在一对大括号中,元素之间使用逗号分隔,元素形式为“键:值”

{1:'food',2:'taste',3:'import'}

字典中的“键”可以是Python中任意不可变或可哈希数据,例如整数、实数、复数、字符串、元组等,但不能使用列表、集合、字典作为字典的“键”,包含列表、集合、字典的元组也不能作为字典的“键”

使用“=”将一个字典赋值给一个变量即可创建一个字典变量

>>>a_dict={'server':'db.diveintopython3.org','database':'mysql'}

快速创建字典:

>>>keys=['a','b','c','d']
>>>values=[1,2,3,4]
>>>dictionary=dict(zip(keys,values))
>>>x=dict()	#空字典
>>>x={}	#空字典
>>>d=dict(name='Dong',age=37)

可以以给定内容为“键”,创建“值”为空或特定值的字典

>>>adict=dict.fromkey(['name','age','sex'])
>>>adict
{'name':None,'age':None,'sex':None}

示例:
在这里插入图片描述

三.元组

tuple: 不可变,所有元素放在一对括号中,元素之间使用逗号分隔,如果元组中只有一个元素的话,后面的括号不能省略

(1,2,3)
(3,)

序列解压包
可以使用序列加压包功能对多个变量同时赋值

>>>x,y,z=1,2,3 #多个变量同时赋值
>>>v_tuple=(False,3.5,'exp')
>>>(x,y,z)=v_tuple #x=False
>>>x,y,z=range(3)
>>>x,y,z=iter([1,2,3]) #x=1
>>>x,y,z=map(str,range(3)) #使用可迭代的map对象
>>>a,b=b,a
>>>a,b,c='ABC'
>>>x=[1,2,3,4,5,6]
>>>x[:3]=map(str,range(5))

序列解包对于列表和字典同样有效

>>>s={'a':1,'b':2,'c'=3}
>>>b,c,d=s.items() #使用字典中的元素
>>>b
('c',3)
>>>b,c,d=s #使用字典时不用太多考虑元素的顺序
>>>b
'c'
>>>b,c,d=s.values()
>>>print(b,c,d)
1,3,2

序列解包遍历多个序列

>>>keys=['a','b','c','d']
>>>values=[1,2,3,4]
>>>for k,v in zip(keys,values):
   print((k,v),end=' ')

使用序列解包遍历enumerate对象

>>>x=['a','b','c']
>>>for i,v in enumerate(x):
   print('	The value on position {0} is {1}'.format(i,v))
The value on position 0 is a

生成器表达式

从形式上看,生成器表达式与列表推导式非常接近,只是生成器表达式使用括号而不是列表推导式所使用的方括号。与列表推导式本质上不同的是,生成器表达式的结果是一个生成器对象,属于迭代器对象。使用生成器对象的元素时,可以根据需要将其转化为列表,集合或元组,也可以使用内置函数next()、生成器对象的__next_()方法获取下一个元素,或者直接使用 for 循环遍历。但是不管用哪种方法访问其元素,当所有元素访问结束以后,如果需要重新访问其中的元素,必须重新创建该生成器对象。也就是说,生成器对象中的每个元素只能使用一次,并且只能从前往后顺序访问。

迭代器的定义
迭代器指的是迭代取值的工具。
迭代是指一个重复的过程,每一次重复都是基于上一次结果而来,迭代提供了一种通用的不依赖索引的迭代取值方式。

可迭代对象
但凡内置有__iter__方法的对象,都称为可迭代对象。
常见可迭代的对象:str,list,tuple,dict,set,文件对象。

迭代器对象
既内置有__iter__方法,又内置__next__方法的对象。执行该方法可以不依赖索引取值。
执行迭代器的__iter__方法得到的依然是迭代器。
文件对象本身就是一个迭代器对象.

四.集合

set/frozenset: 所有元素放在一对大括号在中,元素之间使用逗号分隔,元素不允许重复;
另外,set是可变的,frozenset是不可变的

{'a','b''c'}

集合是无序可变的容器对象,与字典一样使用一对大括号作为界定符,同一个集合的元素之间不允许重复,集合中每个元素都是唯一的

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值