元组
Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。元组和字符串都是是不可变序列.
语法:定义元组语法 () 和 ,
访问元组:和列表一样:a[1]
修改元组:Python中不允许修改元组的数据,包括不能删除其中的元素。
元组是不可变的,也就是说,元组中的元素在被赋值后不能改变。但是,
如果元素本身是一个可变数据类型的列表,那么其嵌套项可以被改变
tuple函数
tuple函数的功能与list函数基本上一样的,以一个序列作为参数并把它转换
为元组,如果参数是元组,那么该参数就会被原样返回。
多维列表/元祖访问 a[][]
元组的优点
与列表相比,元组的优点:
1.通常将元组用于不同的数据类型,将列表用于相同(或相似)的数据类
型。
2.由于元组不可变,所以遍历元组比列表要快(较小的性能提升)。
3.元组可以用作字典的Key,而列表不行。因为字典的Key 必须是不可变的,
元组本身就是不可变的。
4.如果数据不需要更改,将其作为元组来实现,可以确保“写保护”。
字典
变量student为字典类型:
student= {‘name’:‘宋江’, ‘id’:100, ‘sex’:‘男’, ‘address’:‘中国’}
字典访问
student[‘key’]
➢ 访问不存在的键则会报错,解决方法:
➢ get()
使用get(‘key’)不存在不会报错,而且可以设置默认值
在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置
默认值
字典的增删改查
添加元素
如果在使用 变量名[‘键’] = 数据 时,这个“键”在字典中,不存在,
那么就会新增这个元素
删除元素
对字典进行删除操作,有一下几种
\1. del删除指定的元素
\2. del删除整个字典
\3. clear清空整个字典
\4. pop删除字典指定元素并且得到值
\5. popitem随机返回并删除字典中的一对键和值(项)第二部分 {默认会从最后一个开始删除}
修改元素
字典的每个元素中的数据是可以修改的,只要通过key找到,即可修
改
查找元素
info = {‘name’:‘宋江’, ‘id’:100, ‘sex’:‘男生’, ‘address’:‘中国梁山’}
name = info.get(“name”)
print(“使用get(key)查找=”,name)
name = info[“name”]
print(“使用[key]=”,name)
if “name” in info:
print(“使用in根据key从字典中查找name是存在的”)
if “name” in info.keys():
print(“使用in根据key从字典中的info.keys()查找name是存在的”)
if “宋江” in info.values():
print(“使用in根据’值’从字典中的info.values()查找宋江是存在的”)
#字典的查看方式
info = {‘name’: ‘宋江’, ‘age’: 22, ‘sex’: ‘男’, ‘address’: ‘中国梁山’}
#1.通过Key
print(info[“name”])
#2.通过判断,某个Key是否存在于字典中
if “age” in info:
print(“使用in根据key从字典中查找age是存在的”)
if “name” in info.keys():
print(“使用in根据info.keys()从字典中查找name是存在的”)
if “宋江” in info.values():
print(“根据‘值’从字典中的info.values()查找宋江是存在的”)
字典的键值操作
len() 测量字典中,键值对的个数
keys 返回一个包含字典所有KEY的列表
values 返回一个包含字典所有value的列表
items 返回可遍历的(键, 值) 元组数组
has_key Python3中废弃了,这个方法是python 2.6以后支持的,但在python 3.0版本开始
将使用in.
dict.has_key(key)如果key在字典中,返回True,否则返回False
#遍历字典的key-value
infos = {'name': '宋江', 'age': 22, 'sex': '男', 'address': '中国梁山'}
\#('name': '宋江')
for a in infos.items():
print("key={},values={}".format(a[0],a[1]))
print("="*50)
\#拆元组方式
for key,value in infos.items():
print("key={},values={}".format(key,value))
字典遍历
通过for … in …:的语法结构,我们可以遍历字符串、列表、元组、
字典等数据结构。
字符串遍历
a_str = "hello"
for a in a_str:
print(a)
列表遍历
a_list = ["刘备", 2, ["曹操","曹丕"], "孙权", 5]
for a in a_list:
print(a,end=" ")
#没打印一个用空格符分开
print("")
#换行打印
元组遍历
a_tuple = ("曹操", "刘备", 3, 4, 5)
for a in a_tuple:
print(a,end=" ")
print("")
使用枚举遍历enumerate()
遍历列表引入enumerate
如果对一个列表,既要遍历索引又要遍历元素时,首
先可以这样写:
names = ["宋江","卢俊义","吴用"]
for i in range(len(names)):
print("%d %s " % (i,names[i]))
for index,value in enumerate(names,2):
print("%d %s " % (index,value))
print("="*50)
infos = {'name': '宋江', 'age': 22, 'sex': '男', 'address': '中国梁山'}
for index,value in enumerate(infos.values()):
print("%d %s " % (index,value))
集合(set):
集合与之前列表、元组类似,可以存储多个数据,但是这些数据是不重
复的。
集合对象还支持联合(union), 交集(intersection),差集(difference)等数学运算。
集合(set)、列表(list)、元组(tuple)相互转换:
x = set(“abcd”)有重复的值就是自动去重,会按照ASCII编码表排序
y = set(“djec”)
x&y求交集
x|y求并集
x-y求差集
引用
用id()来判断两个变量是否为同一个变量的引用
在Python中值是靠引用来传递的
我们可以用id()来判断两个变量是否为同一个变量的引用。
我们可以把id理解为那块内存的地址表示。
可变类型和不可变类型
不可变类型:字符串、数字、元组
可变类型:列表,字典
不可变类型不能修改值
可以变类型可以修改值
引用的应用-三种方式交换两个数
第一种方式:使用第三方变量
第二种方式:使用两个数和在减掉另外一个数
第三种方式:Python特有方式
#交换两个数,并且保证地址不变
#第一种方式:使用第三方变量实现交换
a=4
b=5
print("交换前:")
print(id(a))
print(id(b))
c = a
a = b
b = c
print("交换后:")
print(id(a))
print(id(b))
#第二种使用两个数和减掉另外一个数
a=4
b=5
print("交换前:")
print(id(a))
print(id(b))
a = a+b
b = a-b
a = a-b
print("交换前:")
print(id(a))
print(id(b))
#第三种,Python独有方式
a = 4
b = 5
print("交换前:")
print(id(a))
print(id(b))
a,b = b,a
print("交换后:")
print(id(a))
print(id(b))