切换风格

Wizard Sky California Sunset glow Black Cloud Beige Dragon Lavender NewYear City Snow Flowers London
收藏本站XSS平台字符串转换jsfuck
【Love Python】【06】打通任督二脉之基本数据结构(元组、集合、字典)[复制链接]
发表于 2014-4-30 08:42:51 | 显示全部楼层 |!read_mode!
一 元组:

特点:

1 有序的集合
2 通过偏移来取数据
>>> a = (1,2,3)
>>> a
(1, 2, 3)
>>> a[0]
1
>>> a[1:3]
(2, 3)
>>> 

3 属于不可变的对象,不能在原地修改内容,没有直接的排序和修改等操作。
tuple类型转换和修改值
>>> a
(1, 2, 3)
>>> id(a)
4438655776
>>> b = list(a)        #元组转换为列表类型并赋值给b
>>> type(b)
<type 'list'>
>>> b
[1, 2, 3]
>>> b[0] = 't00ls'        
>>> a = tuple(b)    #把修改后的列表再转回元组并赋值给a
>>> a                
('t00ls', 2, 3)
>>> id(a)            #实际是新建而不是修改
4438655856
>>> 

4【存在即合理】为什么有列表还要有元组呢?
(1) 元组不可变的好处。某些业务逻辑下可以在一定程度上保证数据的安全和完整性,比如我们传给一个不熟悉的方法或者数据接口,确保方法或者接口不会改变我们的数据从而导致程序问题。
#encoding:utf-8
def listen_data(a):
        a[0] = 't00ls'
        print a
        #return a


a = (1,2,3)                #会报错
a = [1,2,3]                #程序可以正常执行
listen_data(a)

(2) 元组可以在映射中当作键使用。
(3) 元组作为很多内建函数和方法的返回值存在。

二 集合:集合是没有顺序的概念。所以不能用切片和索引操作。

1 创建集合。set():可变的 不可变的frozenset():
2 添加操作: add,update
3 删除 remove
4 成员关系 in,not in
6 交集,并集,差集 & | -
7 set去重列表内容元素重复


三 字典:字典是无序的,它不能通过偏移来存取,只能通过键来存取。
特点:

(1)内部没有顺序,通过键来读取内容,可嵌套,方便我们组织多种数据结构,并且可以原地修改里面的内容,

(2)属于可变类型。

(3)组成字典的键必须是不可变的数据类型,比如,数字,字符串,元组等,列表等可变对象不能作为键.

操作:

(1) 创建字典。{},dict()
>>> info = {'name':'t00ls','age':5}
>>> info
{'age': 5, 'name': 't00ls'}
>>> info = dict(name='t00ls',age=20)
>>> info
{'age': 20, 'name': 't00ls'}
>>> 

(2) 添加内容 、修改内容
>>> info
{'age': 20, 'name': 't00ls'}
>>> info['hahaha'] = '.....'
>>> info
{'age': 20, 'name': 't00ls', 'hahaha': '.....'}
>>> info[hahaha] = '?????'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'hahaha' is not defined
>>> info['hahaha'] = '?????'
>>> info
{'age': 20, 'name': 't00ls', 'hahaha': '?????'}
>>> info.update({'hahaha':'hohoho','sex':'sex'})
>>> info
{'age': 20, 'sex': 'sex', 'name': 't00ls', 'hahaha': 'hohoho'}
>>> 

update 参数是一个字典的类型,他会覆盖相同键的值,不存在的会被忽略

(3) 删除 del,clear,pop

del info['iphone']     #删除某个元素

info.clear()           #删除字典的全部元素

info.pop('name')    #删除指定元素并返回值,比列表中的pop多了一个可返回自定义返回值的功能(找不到要pop的元素时)

(4) in 和 has_key() 成员关系判断操作


(5) keys(): 返回的是列表,里面包含了字典的所有键

        values():返回的是列表,里面包含了字典的所有值

        items:生成一个字典的容器:
>>> info
{'age': 20, 'sex': 'sex', 'name': 't00ls', 'hahaha': 'hohoho'}
>>> info.items()
[('age', 20), ('sex', 'sex'), ('name', 't00ls'), ('hahaha', 'hohoho')]
>>> 

(6) get:从字典中获得一个值
>>> info.items()
[('age', 20), ('sex', 'sex'), ('name', 't00ls'), ('hahaha', 'hohoho')]
>>> info.get('name')
't00ls'
>>> info.get('names')                        #返回None
>>> info.get('names','++++++++')          #自定义返回值
'++++++++'
>>> 

小题:)
已知字典:ainfo = {'ab':'t00ls','ac':20}

完成下面的操作

1 使用2个方法,输出结果:

ainfo = {'ab':'t00ls','ac':20,'sex':'man','age':20}

2 输出结果:['ab','ac']

3 输出结果:['t00ls',20]

4 通过2个方法返回键名ab对应的值。

5 通过2个方法删除键名ac对应的值。

友情提示本文档为连载系列:) 抚菊深思@t00ls.net

操千曲而后晓声,观千剑而后识器。

代码区

GMT+8, 2019-11-22 01:18

Powered by Discuz! X2

© 2001-2018 Comsenz Inc.

回顶部