2018-10-09(tuple,dict,set)

什么时候用容器类型的数据? ---> 需要同时保存多个数据的时候        什么时候用列表? ---> 保存的多个数据是同一类的数据(不需要区分)     什么时候用字典? ---> 保存的多个数据是不同类的数据 (需要区分)

一、tuple

1.什么是元祖

使用()将多个元素括起来,多个元素之间用逗号隔开

a.

容器,可以同时存储多个数据,不可变的,有序的

不可变 ---> 不能增删改

有序 ---> 可以通过下标获取元素

b.

元素,可以是任何类型的数据

tuple1= (1,'yue',True, [1,2],lambda s:s*2)

print(tuple1)

注意

1.

如果元祖的元素只有一个的时候,必须在元素的后面加逗号

tuple2= (100,)

print(type(tuple2))

2.

多个数据直接用逗号隔开,表示的也是一个元祖

tuple2= 10,20,'abc'

print(tuple2,type(tuple2))

 2、元素的查

元祖的元素不支持增删改

列表获取元素的方式,元祖都支持:元祖[下标], 元祖[:], 元祖[::]

遍历:和列表一样

tuple2= ('星期一','星期二','星期三','星期四')

print(tuple2[1])

print(tuple2[2:])

print(tuple2[::-1])

# 遍历

for item in tuple2:

    print(item)


index= 0

while index< len(tuple2):

    print(tuple2[index])

    index+= 1

补充:获取部分元素

可以通过相同的变量个数,来获取元祖中的元素

x, y= (10,20)

print(x, y)

x, y, z= (10,20,30)

x, y= 10,20

# 1.应用:交换两个数的值

a= 10

b= 20

# 错误写法

# a = b  # a = 20

# b = a  # b = 20

# 方法1:

# t = a  # t = 10

# a = b  # a = 20

# b = t  # b = 10

# 方法2:

a, b= b, a     # a,b = (b,a) = (20, 10)

可以通过在变量前加*来获取部分的元素(适用于列表)


tuple2= ('小明',90,89,67,100)

name,*score= tuple2

print(name, score)

tuple2= (90,89,67,100,'小明')

*score, name= tuple2

print(score, name)

tuple2= ['boy',15300022673,90,89,67,100,'小明']

sex, tel,*score, name= tuple2

print(sex, name, score)

"""

(了解)

可以通过在列表或者元祖前加*,来展开列表中的元素

"""

tuple3= (1,2,3,4)

print(*tuple3)

list1= ['abc',100,200]

print(*list1)

 3.元祖的运算

+, *, ==, is, in, not in ---> 和列表一样

print((1,2,3)+ ('a','b'))

print((1,2)* 3)

print((1,2,3)== (1,2,3))

print((1,2,3)is (1,2,3))

print(1 in (1,2,3))

print(1 not in (1,2,3))

4.len(), max(), min()

tuple3= 10,230,100,78,34

print(len(tuple3))

print(max(tuple3))

print(min(tuple3))

5.tuple()

所有的序列都可以转换成元祖,注意,字典只能将key值作为元祖元素

print(tuple('abhdnc'))

print(tuple([1,23,90]))

print(tuple(range(5)))

print(tuple({'a': 100,'b': 200}))

6.sorted()

可以通过sorted()方法,对元祖进行排序,产生一个新的列表

tuple3= 10,230,100,78,34

new= sorted(tuple3)

print(new, tuple3)

二、dict

1.什么是字典(dict)

"""

字典是一个容器类的数据类型,可以用来存储多个数据(以键值对的形式存储)。可变的,无序的

{key1:value1, key2:value2...}

可变 ---> 可以增删改

无序 ---> 不能通过下标获取值

键(key): 用来定位值的。要求只能是不可变的数据类型(数字,字符串,元祖...)。是唯一的

值(value): 存储的数据。可以是任何类型的数据

"""

# person1 = ['yuting', 18, 90, 100, '1547262889']

person2= {'name': 'yuting','age': 18,'face': 90,'score': 100,'tel': '1547262889','name':'小花'}

dict1= {10: 893,'abc': 100, (1,23): 'abc'}

print(person2)

dict1= {}

print(dict1)

2、字典的增删改查

1.查(获取键值对的value)

"""

获取字典的值,必须通过key来获取

a.字典[key]  ---> 获取key对应的值

注意:key值必须是存在的,否则会报KeyError

"""

student= {'name': '小明','age': 30,'study_id': 'py001','sex': 'boy'}

print(student['name'])

print(student['sex'])

# print(student['score'])  # KeyError: 'score'

"""

b.字典.get(key)  ---> 通过key获取值

注意:key值不存在的时候不会报错,结果是None

"""

print(student.get('age'), student.get('study_id'))

print(student.get('score'))

"""

确定key一定存在就是使用[]语法,key可能不存在的时候使用get语法

"""

c.直接遍历字典(推荐使用)

通过for-in遍历字典拿到的是key值

"""

for xin student:

    print(x, student[x])

d.其他遍历方式(了解)

# 直接遍历拿到值

for valuein student.values():

    print(value)

# 直接拿到key和value

print(student.items())

for key, valuein student.items():

    print(key, value)

2.增(添加键值对)

"""

字典[key] = 值(key不存在)

"""

car= {}

car['color']= 'yellow'

print(car)

car['price']= 300000

print(car)

3.修改(修改值)

"""

字典[key] = 新值 (key存在)

"""

car['color']= 'red'

print(car)

4.删 (删除键值对)

a.

del 字典[key]  ---> 通过key删除键值对

student= {'name': '小明','age': 30,'study_id': 'py001','sex': 'boy'}

del student['age']

print(student)

b.

字典.pop(key)  ---> 取出key对应的值(实质还是删除key对应的键值对)

name= student.pop('name')

print(student, name)

3.字典相关运算

==: 判断两个字典的值是否相等

is: 判断两个字典的地址是否相等

in 和 not in: key in 字典 / key not in 字典 ---> 判断key是否存在

"""

dic1= {'a': 1,'b': 2}

aa= dic1

print(dic1is aa)

print({'a': 100,'b': 200}== {'b': 200,'a': 100})

print({'a': 100,'b': 200}is {'b': 200,'a': 100})

print('abc' in {'abc': 100,'a': 200})# True

print('abc' in {'100': 'abc','a': 200})# False

4.字典相关的函数和方法

1.

len(字典) --> 获取键值对的个数

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

print(len(dict1))

2.

字典.clear() --> 清空字典

dict1.clear()

print(dict1)

3.

字典.copy()  --> 将字典中的键值对复制一份产生一个新的字典

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

dict2= dict1.copy()

print(dict2, dict1is dict2)

4.

dict.fromkeys(序列, 值) --> 创建一个字典,将序列中的每个元素作为key,值作为value

dict3= dict.fromkeys('xyz',100)

print(dict3)

dict3= dict.fromkeys(['aa','bb','cc'], (1,2))

print(dict3)

5.

字典.get(key)  --> key不存在取None

字典.get(key,默认值) --> key不存在取默认值

student= {}

print(student.get('name'))

print(student.get('name','无名'))

6.

字典.values()  --> 返回所有值对应的序列

字典.keys() --> 返回所有键对应的序列

字典.items() --> 将键值对转换成元祖,作为一个序列的元素

注意:返回的都不是列表,是其他类型的序列

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

items= list(dict1.items())

print(items,type(items))

print(dict1.items(),type(dict1.items()))

7.

字典.setdefault(key)  --> 添加键值对,键是key,值是None

字典.setdefault(key,value)  --> 添加键值对,键是key,值是value

注意:key存在的时候,对字典不会有任何操作(不会修改key对应的值)

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

dict1.setdefault('aa')

print(dict1)

8.

字典1.update(字典2) --> 使用字典2中键值对去更新字典1。(已经存在的key就更新,不存在就添加)

"""

dict1= {'a': 1,'b': 2}

dict2= {'b': 200,'c': 100}

dict1.update(dict2)

print(dict1)

三、set

1.什么是集合(set)

容器,可以同时存储多个数据,可变的,无序的,元素是唯一的

可变 --> 增删改

无序 --> 不能通过下标获取元素

唯一 --> 自带去重的功能

{元素1, 元素2...}

元素:只能是不可变的数据

"""

set1= {10,20,'abc', (10,200),10}

print(set1)# {(10, 200), 10, 20, 'abc'}

# set2 = {}  # 这个是空的字典

2.集合的增删改查

a.

查(获取元素)

集合不能单独的获取一个元素,也不能切片,只能通过for-in来遍历

for x in set1:

    print(x)

b.

增(添加元素)

集合.add(元素) --> 在集合中添加一个元素

set1= {1,2,3}

set1.add(4)

print(set1)

集合1.update(序列)  --> 将序列中的元素添加到集合1中

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

print(set1)

set1.update('0987')

print(set1)

set1.update(['abc','aaa'])

print(set1)

set1.update({'name': 1,'age': 18})# 字典只添加key

print(set1)

3.删(删除元素)

集合.remove(元素) --> 删除指定的元素

set1.remove(1)

print(set1)

 4.改(集合不能改)

2、集合相关的运算

包含,交集、并集、差集、补集

1.包含

集合1 >= 集合2 ---> 判断集合1之中是否包含集合2

集合2 <= 集合2 ---> 判断集合2之中是否包含集合1

set1= {1,2,3,4,5,10}

set2= {3,4,1}

print(set1>= set2)

2.交集 -> &

& --> 求两个集合公共的部分

set1= {1,2,3,4,5}

set2= {1,2,3,10,20}

print(set1& set2)

3.求并集

| --> 求两个集合的和

print(set1| set2)

4.求差集

集合1-集合2 --> 求集合1中除了集合2以外的部分

print(set1- set2)

5.求补集

^ --> 求两个集合除了公共部分以外的部分

print(set1^ set2)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 5,770评论 2 16
  • 增、删、改、查 1.修改列表元素 通过下标获取元素,然后重新赋值: 列表名[下标] = 新的值注意: 这儿的下标不...
    zzzsssr阅读 337评论 0 3
  • 一、列表 增,删,改,查 1.修改列表元素 '''通过下标获取元素,然后重新赋值:列表名[下标]=新的值 '''n...
    烧了回忆取暖丶阅读 237评论 0 2
  • 各位亲亲,如果我的公众号做的好的话,可以推荐给朋友的呢~ 近期好多公众号被封了 防止被封,请加备用微信号 dong...
    Lli_17cf阅读 506评论 0 1
  • 颜小姐收到一通信用卡消费确认电话,在得知消费金额后,她感到非常突兀。 那是好看先生的杰作。当然是颜小姐授权...
    弼马won阅读 367评论 0 1