Python 元组、字典、集合操作总结

元组

a=('a',)

a=('a','b')

特点

有序

不可变,不可以修改元组的值,无法为元组增加或者删除元素

元组的创建

a=('a',)

a=('a','b')

tuple('abcd')

转化为元组

tuple(i for i in range(10))

生成器推导式转化为元组,生成器推导式产生的生成器对象只能遍历一次

g=( i for i in range(10))

next(g)

单步迭代生成器对象

for i in g:

print(i,end='')

直接迭代生成器对象

a=[1,2,3,4]

b=['a','b','c','d']

for I in zip(a,b):

print(i)

(1,'a')

(2,'b')

(3,'c')

(4,'d')

Zip接受a和b 作为参数,把对应位置的元素打包成一个个元组,返回zip对象

元组的遍历

for I in a:

print(i)

for I in range(len(a)):

print(a[i])

 

元组的删除

del a

删掉整个元组

 

 

字典

{'a':1,'b':2,'c':3}

 

特点

键是任意不可变的数据,键不允许重复

值可以重复,可以修改的

无序可变

不可以使用

for i in range(len(a)):

a[i]

这种方式来遍历

在字典中[]操作符表示读取某键对应的值

字典的创建

a={'a':1,'b':2,'c':3}

 

Keys=['a','b','c','d']

Values=[1,2,3,4]

dict(zip(keys,values))

通过已有的键值对快速创建字典

D=dict(name='Dong',age=37)

{'name':'Dong','age'=37}

但是不能写成

Dict(1=2)

Dict('name'='Dong')

这样会抛keyword cannot be an experssion的异常

 

a=dict.fromkeys(['name','age','sex'])

给定键值,值为空

mca={"a":1, "b":2, "c":3, "d":4}

dicts={v:k for k,v in mca.items()}

结果为

{1: 'a', 2: 'b', 3: 'c', 4: 'd'}

字典推导式

字典元素的读取

a['name']

若name存在,则返回值,若name不存在,则keyError

a.get('name','Amy')

获得指定的键对应的值,如果键不存在,则返回指定的值

字典元素的添加与修改

a['age']=38

若键存在,表示修改键的值,若不存在,表示添加一个新的键值对

a.update({'a':a,'b':b})

将另一个字典中的键值对添加到a中,如果键值有相同的,则以另一个字典中的值为准

字典元素的删除

del(a['age'])

 

a.pop('age')

删除指定键的元素并返回指定键的值

a.popitem()

随机删除并返回键值对

a.clear()

删除字典中所有元素

字典的遍历

a={'name':'Dong','age'=37}

for item in a.items():

print(a)

('age',37)

('name',Dong)

items() 方法返回键值对

是dict_items类型的

for I in a:

print(i)

'name'

'age'

啥也不写,就是遍历键

for i in a.keys():

print(i)

'name'

'age'

keys()方法返回键

是dict_keys类型的

for i in a.values():

print(i)

'Dong'

'37'

values()方法返回值,是dict_values类型的

字典的应用

  

统计频率

d=dict()

for ch in z:

d[ch]=d.get(ch,0)+1

如果ch在字典中已经存在,那么get就会返回频率 ,频率+1,如果不存在,那么get返回0,+1,频率就是1

 

 

集合

a={3,5}

 

特点

无序可变

集合中元素不许重复

集合的创建

X={random.randint(1,500) for i in range(100)}

集合推导式

set([1,1])

{1}

转化为集合,如果原来的数据中存在重复元素,在转换位集合时只保留一个

set()    不是{} 这个是空字典

创建一个空集合

集合元素的添加

a.add(7)

往集合中加入重复的元素,是加不进去的,也不会有任何异常

集合元素的删除

a.pop()

删除任意一个集合中的元素

a.remove(3)

从集合中删除3

a.clear()

从集合中删除所有元素

集合的操作

并集

a|b

a.union(b)

交集

a&b

a.intersection(b)

差集

a-b

a.difference(b)

对称差

a^b

a.symmetric_difference(b)

集合大小(一个 set 比另一个 set 小,只有在第一个 set 是第二个 set 的 subset 时)

a<b

 

判断是否是子集

a.issubset(b)

 

集合的应用

提取序列中所有不重复的元素

a=set(list_b)

 

生成不重复的随机数

data=set()

while True:

data.add(random.randint(0,100))

if len(data)==20

break

 
posted @ 2017-03-11 19:43  unflynaomi  阅读(659)  评论(0编辑  收藏  举报