定义方式:
1. 定义方式是: 2,3,4 ——》默认是一个元组2. 使用():a= (2,3,4,2) ——>认为元组
a[1]=3 a.count(2)=0 a.index(3)=1
tuple函数的功能与list函数基本上一样的,以一个序列作为参数 并把它转换为元组,如果参数是元组,那么该参数就会被原样返回。
a=(10) ——>则理解为a接收了一个int类型的变量 a=(10,) ——>则理解a为元组 注意:逗号
3.元组中存放的数据可以是: int str list dict
元组里可以有不同类型的数据a=(1,2,"s",(1,2),[1,3],{"age":18}])
Python中不允许修改元组的数据,包括不能删除其中的元素。元组是不可变的,也就是说,元组中的元素在被赋值后不能改变。 但是,如果元素本身是一个可变数据类型的列表,那么其嵌套项可以被改变。
tuple()列表和字符串可以转化为元组,int整形数值不可以转化为元组
元组的内置函数两个count, index index和count与字符串和列表中的用法相同
多维列表/元祖访问的示例a=((“刘备”,“刘禅”)) a[0][0]=刘备 a[0]=("刘备",“刘禅”)
元组的优点与列表相比,元组的优点:
• 通常将元组用于不同的数据类型,将列表用于相同(或相似)的数据类型。
• 由于元组不可变,所以遍历元组比列表要快(较小的性能提升)。
• 元组可以用作字典的 key,而列表不行。因为字典的 key 必须是不可变的,元组本身就是不可变的。
• 如果数据不需要更改,将其作为元组来实现,可以确保“写保护”。
A.字典定义:
1.以键值对作为整体,保存的数据
2.字典中的key不能重复,如果有相同的则后面的值覆盖了前面相同key的值
3.字典中元素的顺序是无序
B.字典中值得获取:
根据键获取值: 字典名[key] ——>value 找不到报错 keyError
’ 也可以通过get(): 字典名.get(key,default) ——>如果找不到key则显示默认值
字典是无序的不能用下表取值,通过key(键)取值,key不可以重复 字典名【’key‘】得到key对应的值
还可以通过字典名.get(key,default),如果找不到key则显示默认值。
字典定义字典和列表一样,也能够存储多个数据,字典中的值并没有特殊顺序。字典的每个元素由2部分组成,键:值。例如 'name':'宋江' ,'name'为键,'宋江'为值查找某个值是要用键访问值
使用.get(‘key’,default)不存在不会报错,而且可以设置默认值。如果存在返回默认值default
字典的增删改查
添加元素如果在使用 变量名['键'] = 数据 时,这个“键”在字典中不存在,那么就会新增这个元素删除元素
1. del删除指定的元素info = {'name':'宋江', 'sex':'男', 'address':'中国梁山'}
print('删除前,%s'%info)
del info['name']
print('删除后,%s'%info)
2.del删除整个字典info = {'name':'宋江', 'sex':'男', 'address':'中国'} 整个字典包含字典的空间都被回收,如果使用则报错
3. clear清空整个字典清除字典中所有项但是会保留空字典
4. pop删除字典对应的键和对应的值,并且返回键对应的值 字典名.pop(key) 返回当前key对应的值 如果 key在字典中不存在????报错
5. popitem随机删除字典指定元素并且得到值,如果字典中所有内容都要删除则可以使用popitem() 字典空了能不能调用???? 报错
修改元素
通过key修改info = {'name':'宋江', 'id':100, 'sex':'f', 'address':'中国梁山'}
name = input('请输入新的名字:')
info['name'] = name
print('修改之后的name为%s:'%info['name'])
查找元素
name = info.get("name") name = info["name"] if "name" in info: if "name" in info.keys():if "宋江" in info.values():
字典的键值操作
1. len()测量字典中,键值对的个数2. keys()返回一个包含字典所有KEY的列表 Python3中 keys = list(info.keys())
Python2#不需要转换就是列表keys = info.keys()
3. values返回一个包含字典所有value的列表
在python2中打印中文的value值并且没有乱码 print(str(info[1]).decode("utf-8"))
4. items返回可遍历的(键, 值) 元组数组for info in infos.items(): 返回(“key”:“value”)
5. has_key Python3中废弃了,这个方法是python 2.6以后支持的,但在python 3.0版本开始将使用in.
dict.has_key(key)如果key在字典中,返回True,否则返回False
字典遍历
通过for ... in ...:的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构。1. 遍历字典的key(键) for key in name.keys()
2. 遍历字典的value(值) for value in name.value()
3. 遍历字典的items项(元素)for item in name.intems()———》(“age”,“18”)
4. 遍历字典的key-value(键值对)
nfos = {'name':'宋江', 'id':100, 'sex':'男生', 'address':'中国梁山'}
print("----------元组下标方式-----------")
#元组下标方式
for a_tuple in infos.items():
print("key={},value={}".format(a_tuple[0],a_tuple[1]))
print("----------拆元组方式-----------")
#拆元组方式
for key,value in infos.items():
print("key={},value={}".format(key,value))
6. 使用枚举遍历enumerate()
如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写:
names = ["宋江","卢俊义","吴用"]
for i in range(len(names)):
print("%d %s " % (i,names[i])) 麻烦
遍历字典返回key'
infos = {'name':'宋江', 'id':100, 'sex':'男生', 'address':'中国梁山'}for index,value in enumerate(infos):
print("%d %s " % (index,value))
遍历值
infos = {'name':'宋江', 'id':100, 'sex':'男生', 'address':'中国梁山'}for index,value in enumerate(infos.values()):
print("%d %s " % (index,value))
enumerate还可以接收第二个参数,用于指定索引起始值,使索引值下标由参数开始
names = ["宋江","卢俊义","吴用"]for index,value in enumerate(names,2):
print("%d %s " % (index,value))
集合(set) 可以字符串去重a=set(str) ---->{“a”,“b”,“c”} a=set()
集合与之前列表、元组类似,可以存储多个数据,但是这些数据是不重复的。集合对象还支持并集y|x, 交集y&x 或x&y,差集(a-b)是:项在a中,但不在b中和对称差集x^z(在x或z中,但不会同时出现在二者中) 、联合等数学运算。
集合(set)、列表(list)、元组(tuple)相互转换
运算符 Python 表达式 结果 描述 支持的数据类型
+ [1, 2] + [3, 4] [1, 2, 3, 4] 合并 字符串、列表、元组
* 'Hi!' * 3 ['Hi!', 'Hi!', 'Hi!'] 复制 字符串、列表、元组
in 3 in (1, 2, 3) True元素是否存在 字符串、 列表、元组、字典
not in 4 not in (1, 2, 3) True 元素是否不存在
字符串、列表、元组、字典
Extend,append该变原来的列表,但没有返回值(None)运算符有返回值1、len() 方法返回对象(字符、列表、元组等)长度或项目个数 len在操作字典数据时,返回的是键值对个数。
2.max() 方法返回给定参数的最大值,参数可以为序列a = max("hello atguigu")
3.deldel有两种用法,一种是del加空格,另一种是del()
引用用id()来判断两个变量是否为同一个变量的引用 以后只要涉及到等号(=)的都是引用(两者地址相同)
在Python中值是靠引用来传递的
我们可以用id()来判断两个变量是否为同一个变量的引用。我们可以把id理解为那块内存的地址表示。可以类型和不可变类型
不可变类型:字符串、数字、元组(不可变类型不能修改值)内容相同时地址相同
可变类型:列表,字典(要)(要就给地址不关你有没有)内容相同时地址也不同
引用的应用-三种方式交换两个数
1. 第一种方式:使用第三方变量其他语言也是可以这样实现,这种方式交换两个任何值都行,比如交换两个字符串都行。
第三种方式:Python特有方式