python 第三章 元祖,字典,集合,while循环
Posted xyx2018
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 第三章 元祖,字典,集合,while循环相关的知识,希望对你有一定的参考价值。
元祖
Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 tup = (1,2,3,4,"hello","word") 5 print(type(tup))
创建空元组
1 tup = ()
元组中只包含一个元素时,需要在元素后面添加逗号
1 tup = (1,)
元祖也可以通过索引取值
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 tup = (1,2,3,4,"hello","word") 5 tup1 = (2,4,6,8,10) 6 print(tup[4]) 7 print(tup1[3]) 8 #输出 9 hello 10 8
修改元祖
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,或者重新给元祖赋值
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 tup = (1,2,3,4,"hello","word") 5 tup1 = (2,4,6,8,10) 6 tup2 =tup+tup1 7 print(tup2) 8 tup2 = (100,200) 9 print(tup2) 10 #输出 11 (1, 2, 3, 4, ‘hello‘, ‘word‘, 2, 4, 6, 8, 10) 12 (100, 200)
删除元祖
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组。注意删除后的元祖在调用会报错
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 tup = (1,2,3,4,"hello","word") 5 tup1 = (2,4,6,8,10) 6 del tup #删除元祖 7 tup2 =tup+tup1 8 print(tup2) 9 #输出 10 NameError: name ‘tup‘ is not defined 11 #因为删除了tup,所以报错,显示出tup没有定义
字典
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中
键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 dic = {"name":"xyx","age":21,"age":27} 5 print(dic) 6 #输出 7 {‘name‘: ‘xyx‘, ‘age‘: 27}
访问字典中的值
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 dic = {"name":"xyx","age":21} 5 print(dic["name"]) 6 print(dic["age"]) 7 #输出 8 xyx 9 21
添加键-值对,使用字典来存储用户提供的数据或编写能自动生成大量键-值对的代码时,通常都需要先定义一个空字典.
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 dic={} 5 dic["a"]=10 6 dic["b"]=20 7 print(dic) 8 #输出 9 {"a":10,"b":20}
get(),update() 方法
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 #根据key获取值,key不存在,返回None,或者自己指定的value 5 dic ={"name":"xyx","age":21} 6 dic.get(‘key‘) 7 None 8 dic.get(‘key‘,-1) 9 -1 10 11 #进行更新,如果已经有了key则替换value的值 ,如果没有那就创建 12 dic ={"name":"xyx","age":21} 13 dic1 = {‘Sex‘: ‘female‘ } 14 dic.update(dic1) 15 print(dic) 16 #输出 17 {‘name‘: ‘xyx‘, ‘age‘: 21, ‘Sex‘: ‘female‘}
修改字典中的值
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 dic ={"name":"xyx","age":21} 5 dic["name"]=20 6 dic["age"]=30 7 print(dic) 8 #输出 9 {‘name‘: 20, ‘age‘: 30}
删除键-值对
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 dic ={"name":"xyx","age":21} 5 del dic["name"] 6 #同时对应的值一同删除,注意删除的键-值对永久消失了 7 print(dic) 8 #输出 9 {"age":21}
遍历字典,同时遍历key,value ,只遍历key,只遍历value
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 dic ={"name":"xyx","age":21} 5 for i,v in dic.items(): 6 print(i,v) 7 #dic.items() 返回一个键-值对列表 8 #输出 9 name xyx 10 age 21 11 12 dic ={"name":"xyx","age":21} 13 for i in dic.keys(): 14 print(i) 15 #dic.keys() 返回一个键列表 16 #输出 17 name 18 age 19 20 dic ={"name":"xyx","age":21} 21 for i in dic.values(): 22 print(i) 23 #dic.values() 返回一个值列表 24 #输出 25 xyx 26 21
sorted()函数,set()函数
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 dic ={"name":"xyx","age":21} 5 for i,v in sorted(dic.items()): 6 print(i,v) 7 #sorted()函数 按顺序遍历出字典列表 8 #输出 9 age 21 10 name xyx 11 12 dic ={"name":"xyx","age":21,"ages":21} 13 for i in set(dic.values()): 14 print(i) 15 #set()函数 实现对字典值的去重 16 #输出 17 xyx 18 21
嵌套字典列表
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 dic = {"name": "x"} 5 dic1 = {"name1": "y"} 6 dic2 = {"name2": "x"} 7 list = [dic, dic1, dic2] 8 for i in list: 9 print(i) 10 #如果要改变字典的值需要使用for循环遍历这个列表然后更改 11 for i in list: 12 i["name"] = 50 13 i["name1"] = 60 14 i["name2"] = 70 15 print(i) 16 #输出 17 {‘name‘: ‘x‘} 18 {‘name1‘: ‘y‘} 19 {‘name2‘: ‘x‘} 20 {‘name‘: 50, ‘name1‘: 60, ‘name2‘: 70} 21 {‘name1‘: 60, ‘name‘: 50, ‘name2‘: 70} 22 {‘name2‘: 70, ‘name‘: 50, ‘name1‘: 60}
集合
set和dict类似,也是一组key的集合,但不存储value,由于key不能重复,所以,在set中,没有重复的key,不可变类型
要创建一个set,需要提供一个list作为输入集合
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 s = set([1,2,3]) 5 print(s) 6 #输出 7 {1, 2, 3} 8 9 """注意,传入的参数[1,2,3]是一个list 而显示的{1,2,3,}只是告诉你这个set内部有1,2,3这三个元素,显示的顺序也不表示set是有序的,重复的元素在set中自动被过滤""" 10 11 s = set([1,1,2,2,3,3]) 12 print(s) 13 #输出 14 {1,2,3}
&交集 |并集 -差集 ^交叉补集
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 s1 = set([1,2,3]) 5 s2 = set([2,3,4]) 6 a = s1 & s2 7 print(a) 8 #输出 9 {2, 3} 10 11 b = s1 | s2 12 print(b) 13 #输出 14 {1, 2, 3, 4} 15 16 c = s1 - s2 17 print(c) 18 #输出 19 {1} 20 21 d = s2 - s1 22 print(d) 23 #输出 24 {4} 25 26 e = s1 ^ s2 27 print(e) 28 #输出 29 {1, 4}
添加通过add(key)方法可以添加元素到set中,可以重复添加但是没有效果。
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 s = set([1,2,3]) 5 s.add(4) 6 print(s) 7 s.add(4) #重复添加但是没效果 8 print(s) 9 #输出 10 {1, 2, 3, 4} 11 {1, 2, 3, 4}
其他查询交集,子集,副集方法,以及更新集合多个值
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #isdisjoint() 查询有没有交集 没有显示True 有就是False 4 s1 = set([1,2,3,4,5]) 5 s2 = set([6,7,8,9,10]) 6 print(s1.isdisjoint(s2)) 7 #输出 8 True 9 10 #issubset() 查询s1是不是s2的子集 11 print(s1.issubset(s2)) 12 #输出 13 False 14 15 #issuperset 查询副集 16 print(s1.issuperset(s2)) 17 #输出 18 False 19 20 #update 更新多个值 21 s1.update(s2) 22 print(s1) 23 #输出 24 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
while 循环
在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志,充当了程序的交通信号灯,你可让程序在标志位True时继续运行,并在任何事件导致标志的值为False时让程序停止运行。这样,在while语句中就只需检查一个条件--标志的当前值是否为True,并将所有测试(是否发生了应将标志设置为False的事件)都放在其他地方,从而让程序变的更为整洁
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 5 while True: 6 print("请输入你喜欢的数字") 7 print("输入q退出") 8 a = input("请输入: ") 9 if a == "q": 10 break 11 else: 12 print(a) 13 #break 退出循环 14 """在任何python循环中都可以使用break语句,比如可使用break退出遍历列表或字典的for循环"""
在循环中使用continue
要返回到循环的开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句,它不像break语句那样不在执行余下的代码并退出整个循环
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 """从1到10,但只打印偶数的循环""" 5 a = 0 6 while a < 10: 7 a += 1 8 if a % 2 == 0: 9 print(a) 10 else: 11 continue 12 13 #输出 14 2 15 4 16 6 17 8 18 10
以上是关于python 第三章 元祖,字典,集合,while循环的主要内容,如果未能解决你的问题,请参考以下文章