Chinaunix首页 | 论坛 | 博客
  • 博客访问: 82403
  • 博文数量: 26
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2015-08-12 22:31
文章分类

全部博文(26)

文章存档

2016年(26)

我的朋友

分类: Python/Ruby

2016-11-07 22:00:27

元组、集合、字典

  • 元组

tuple:元组(即常量数组),一旦生成,不可改变
tuple = ('a','b','c','d','e')
可以用list的[],操作符提取元素。就是直接修改元素。

元组可以和列表互相转换
>>> a
('a', 'b', 'c')
>>> list(a)   ---------->元组转换成列表
['a', 'b', 'c']
>>> a = list(a)
>>> a
['a', 'b', 'c']
>>> tuple(a)  ----------->列表转换成元组
('a', 'b', 'c')
>>> 

  • 集合

创建set的两种方式
1,
c = {1,2,3,4,5}


2,
a = set([1,2,3,4])
b = set ((3,4,5,6))


a & b #求交集 a.intersection(b)
a | b #求并集 a.union(b)
a - b #求差集 a.difference(b)
a ^ b #求补集 a.symmetric_difference(b)
a.issubset(b) #a是否是b的子集
a.issuperset(b) #a是否包含于b
举例:
>>> x = {1,2,3,4}
>>> y = {2,3,4,5}
>>> type(x)
>>> x - y
set([1])
>>> x ^ y
set([1, 5])
>>> x & y
set([2, 3, 4])
>>> x | y
set([1, 2, 3, 4, 5])

  • 字典
dict = {‘a’:1,'b':2,'c':3}
dict.clear() #清空字典
dict.get(key,0) #同dict[key],多了,多了没有则返回缺省值,0。[],没有则抛异常
dict.has_key(key) #有该键返回TRUE,否则返回FALSE
dict.items()   #将所有的字典以列表的方式返回,这些列表中的每一项都来自(键,值),
但是项在返回时并没有特殊的顺序。
dict.keys()         #返回字典的列表
dict.values() #以列表的形式返回字典中的值,返回的值的列表可包含重复元素
dict.pop(key) #删除指定的key
dict.popitem() #得到一个pair,并从字典中删除它,注意随机删除,已空则抛异常
dict.setdefault(key,v)   #设置默认key的值,如果字典中有该key,则不改变value,如果没有则默认为v
dict.update() #增加合并字典

dictionary的复制
dict.copy() #拷贝字典
dict1 = dict #别名(注意:此时修改任意字典中的任意值,另一个字典中的值也会跟着改变)
dict2 = dict1.copy() #克隆(浅copy,修改一个字典中值另一个不会改变,但是如果字典中包含有list等,
将list中的值修改,则另外一个字典也会改变,所有叫浅copy。深copy有专门的模块,copy.deepcopy())

深拷贝和浅拷贝的区别?
1,copy.copy  浅拷贝 只拷贝父对象,不会拷贝对象的内部子对象。
2,copy.deepaopy  深拷贝 拷贝对象及其子对象。

举例:

点击(此处)折叠或打开

  1. #_*_ coding:utf-8 _*_
  2. import copy
  3. a = [1,2,3,['a','b']]
  4. b = a
  5. c = copy.copy(a)
  6. d = copy.deepcopy(a)

  7. a.append(5)
  8. a[3].append('c')

  9. print (a)
  10. print (b)
  11. print (c)
  12. print (d)


执行结果如下:
[1, 2, 3, ['a', 'b', 'c'], 5]
[1, 2, 3, ['a', 'b', 'c'], 5]
[1, 2, 3, ['a', 'b', 'c']]
[1, 2, 3, ['a', 'b']]




1,遍历字典的方法
1).
dict = {'a':1,'b':2,'c':3}
for k,v in dict.items():      ------->效率低,因为先转化为列表,再进行遍历的
  print k,v
  
2)dict = {'a':1,'b':2,'c':3}
for i in dict:                -------->效率高
  print i,dict[i]
  
  
2,举例:dict.update() #增加合并字典
>>> d
{'a': 1, 'c': 4, 'e': 5, 'd': 6, 'g': 2, 'f': 7}
>>> b
{'a': 'job', 'b': 'hello'}
>>> d.update(b)   ----------------------------->字典的key具有唯一性,所以是这种结果
>>> d
{'a': 'job', 'c': 4, 'b': 'hello', 'e': 5, 'd': 6, 'g': 2, 'f': 7}
>>> 




对比list,tuple,dict,set
|------------------------------------------------------------------------
|list 是有序的集合,可以随时添加删除其中的元素,注意是有顺序的。
缺点:查找和插入的时间,随着元素的增加而增加
优点:占用空间小,浪费的内存少,通过下标来查询。
|-------------------------------------------------------------------------------------
|tuple “元组”,和list非常类似,但是一旦创建完毕,就不能修改,单个元素的tuple
| 要加逗号
|-------------------------------------------------------------------------------------
|dict    “字典”,建立一组key和一组value的映射关系,key不能重复且不可变。
| dict的优点:1,查找速度快,10万个元素,查找的速度都一样 2,默认是没有顺序
| dic的缺点:1,浪费内存
| dict是可变的,我们可以随时往里面添加新的key-value
|------------------------------------------------------------------------------
|set 集合,持有一系列元素,这一点和list很像,但是set的元素没有重复,而且是无序的,
| 特点:1,无序, 2,元素不重复
功能:1,关系测试, 2,去重
|-------------------------------------------------------------------------------------


以上是给予python2
阅读(1263) | 评论(0) | 转发(0) |
0

上一篇:day1-(4)列表和切片

下一篇:day1-模拟登陆

给主人留下些什么吧!~~