Python序列结构(第三章)

2. 元组(tuple,(  ))

元组是轻量级(简化版)列表,不如列表功能强大,元组的所有元素放在()里,元素之间使用逗号隔开,如果只有一个元素,必须在后面加一个逗号,才为元组

>>>x=()            #元组的产生,空元组
>>>y=tuple()       #元组的产生,空元组
>>>x=(1,2,3,4)
>>>tupe(x)         #查看变量类型
<class 'tuple'>
>>>x[0]            #支持两种访问元素变量
1
>>>x[-1]
4
>>>x[1]=4
报错
>>>tuple(range(5))    #其他迭代对象转换为元组
(0,1,2,3,4)
>>>

注:元组是不能改变了,即不能改变元素原来的值

元组与列表的异同点

不同点

元组的访问速度比列表快,元组在内部实现上不允许修改其元素值,代码安全,元组作为不可变序列,元组可作为字典的键,也可以作为集合的元素,列表则不能当作字典的使用,也不能作为集合中的元素。

元组是不可变序列,不可以修改、增加、删除元组的元素。

相同点

元组列表都属于有序序列,都支持双向索引访问其中元素,有大量的内置函数及运算符他们都可以使用,元组也支持切片,只能通过切片访问元素。

 

生成器表达式

生成器表达式结果是一个生成器对象(具有惰性的求值的特点),效率高,空间占用少,适合大数量处理的场合

生成器表达式和列表推导式相似,只是使用圆括号 (),生成器对象的元素,可以将其转换为列表或元组

>>>g=(i for i in  range(10))                        #创建生成器对象
>>>g
<generateor object <genexpr> at 0x00000003095200>
>>>tuple(g)                                         #根据需要转换为元组
(0,1,2,3,4,5,6,7,8,9)                               #生成器对象访问结束
>>>tuple(g)
()
>>>

注:只能从前往后访问每个元素访问过的元素不能再次访问只在需要时生成新元素

_next_()方法和next()函数访问元素

>>>g=(i for i in range(10))
>>>g._next_()                #只能一个一个访问,从左到时右
0
>>>g._next_()
1
>>>next(g)
2
>>>

3. 字典(dict ,{ })

字典包含若干 “键:值” 元素的无序可变序列, “键:值”表示一种映射或对应关系,也称为关联数组,相当于java中的hashmap集合

键可以是python中的任意不可变数据(整数,复数,字符串,实数,字符串,元组等可散列数据),键不能重复,值可以重复

字典的创建

>>>a_dict={'计算机':'java','外语':'English'}    #赋值创建
>>>a_dict=dict(计算机='java',外语='English')      #以关键参数形式创建

:这里两种结果是一样的,需要注意的是;第二种创建方法,键不需要''以字符串形式出现,但是值必须要加''以字符串出现 

根据已有数据创建字典。例:

>>>k=['a','b','c']
>>>v=[1,2,3]
>>>a_dict=dict(zip(k,v))
>>>a_dict
{'a':1,'b':2,'c':3}
>>>

:这里的k和v长短不同时,以短的为准

以给定的键为值,创建值为空的字典。例:

>>>a_list=['a','b','c']
>>>a_dict=dict.fromkeys(a_list)
>>>a_dict
{'a':None,'b':None,'c':None}
>>>

字典元素的访问

1. 根据映射关系,提供键值作为下标就可以访问对应值,若键不存在,抛出异常

2. 提供get()方法返回指定键的对应值,并且允许键值不存在可返回特定值。例:

>>>a_dict={'a':1,'b':2}
>>>a_dict.get('a')
1
>>>a_dict.get('c',"不存在")
不存在
>>>

3. 字典对象的遍历。例 :

默认遍历字典的键:

>>>a_dict={'a':1,'b':2,'c':3}
>>>for item in a_dict:
    print(item)


a
b
c

items()字典中的元素

>>>a_dict={'a':1,'b':2,'c':3}
>>>for item in a_dict.items():
    print(item)

('a',1)
('b',2)
('c',3)

values()指定字典中的值 

>>>a_dict={'a':1,'b':2,'c':3}
>>>for item in a_dict.values():
    print(item)

1
2
3

字典名 . keys() :可以查看字典中的所有键 

元素添加 ,修改与删除

指定键为下标时,为字典元素赋值时,两种含义:

键存在,则修改键对应的值

键不存在,则表示添加一个键:值

字典对象update(),另一个字典对象,一次性全部添加 到当前字典对象,存在相同键,则以另一字典的值为准,对当前字典更新

>>>a_dict={'a':1,'b':2,'c':3}
>>>b_dict={'a':97,'d':4}       
>>>a_dict.update(b_dict)         #对a作更改,并添加新键值'd':4
>>>a_dict
{'a':97,'b':2,'c':3,'d':4}
>>>

popitem()方法:弹出一个元素

pop()方法:弹出指定键元素

>>>a_dict={'a':1,'b':2,'c':3}
>>>a_dict.popitem()
('a',1)
>>>a_dict.pop('c')
3
>>>a_dict
{'b':2}
>>>

4. 集合(set,{})

创建

>>>a={3,5}                    #创建集合对象
>>>a_set=set(range(8,14))     #其它对象转为集合
>>>a_set
{8,9,10,11,12,13}
>>>

注:这里集合不存在相同元素,转换时自动去掉重复元素

集合操作与运算

集合操作

add():添加元素

remove():删除指定元素

update() :合并另外一个集合中的元素到时当前元素中,自动去掉重复的元素

pop() :随机删除一个元素并返回该元素

集合运算

|    并集

&   交集

-    差集

^    对称差集

<   真子集

<= 子集

发布了59 篇原创文章 · 获赞 3 · 访问量 4774

猜你喜欢

转载自blog.csdn.net/CDZAllier/article/details/100597694