Python(IT峰)笔记07-数据类型详解-元祖的定义与操作,元祖推导式,元祖生成器,yield关键字,字典及定义,字典所支持的操作,zip研所函数,dict转型,字典函数,集合,冰冻集合,集合推导

本文详细介绍了Python中元组、字典和集合的基本概念、操作及特性。元组不可变,常用于存储有序数据;字典是键值对的集合,键必须唯一;集合则是一组无序且不重复的数据。文中通过实例演示了这些数据类型的创建、访问、修改、遍历、运算和相关函数的使用,包括元组的推导式、字典的生成器、集合的运算符及集合运算函数。此外,还涉及到了特殊操作如元组的切片、字典的键值交换、集合的对称差集等高级用法。
摘要由CSDN通过智能技术生成
1、元祖的定义

一组有序数据的组合,元祖一旦定义不可修改,是不可变数据类型

  • 定义空元祖

变量=()
变量=tuple()
变量=(内容1,内容2,内容3,……)直接赋值
特列:变量=内容1,内容2,内容3,……

  • 元祖不可改变新,只能使用索引进行访问,不能改变,只读不写
    元祖的操作
    定义元祖是,如果只有一个元素也要使用逗号分割
mytuple=(1,)
  • 元祖也可以使用切片来访问元祖元素,当列表处理就好
mytuple=(1,3,5,7,9,3,4,5,67,98,8)
print(len(mytuple))#11
res1=mytuple[1:5]
print(res1)#(3, 5, 7, 9)
res2=mytuple[1:10:2]
print(res2)#(3, 7, 3, 5, 98)
  • 统计元素出现的次数,count()
mytuple=(1,3,5,7,9,3,4,5,67,98,8)
res=mytuple.count(3)
print(res)#2
  • 查找特定元素在元祖的索引值
mytuple=(1,3,5,7,9,3,4,5,67,98,8)
res=mytuple.index(98)
print(res)#9
res=mytuple.index(5,2,9)#从第三个到第10个元素查找元素5的位置
print(res)#2
  • 元祖的加法运算(合并运算),乘法运算,赋值n次
mytuple1=(1,3,5,7,98)
mytuple2=(67,98)
res=mytuple1+mytuple2
print(res)#(1, 3, 5, 7, 98, 67, 98)
res=mytuple1*3
print(res)#(1, 3, 5, 7, 98, 1, 3, 5, 7, 98, 1, 3, 5, 7, 98)
  • in 运算
mytuple1=(1,3,5,7,98)
res=3 in mytuple1
print(res)#True

2、元祖的推导式

元祖推导式产生的是生成器(generate)
语法:
( 变量运算 for item in 容器):返回一个元祖生成器
生成器是一个特殊的迭代器,生成器可以自定义,也可以使用元祖推导式去定义。

  • 生成器是按照某种算法去推算下一个数据或结构,只需要往内存中存储一个生成器
  • 生成器语法:
    1、里面是推导式,外面是一个(),结果就是一个生成器
    2、自定义生成器,含有yield关键字的函数就是生成器,含有yield关键字的函数,返回的结果就是一个迭代器,换句话说,生成器函数就是一个返回迭代器的函数
mytuple1=(1,3,5,7,98)

res=(item**2 for item in mytuple1)
print(res)#<generator object <genexpr> at 0x000001FD90722CF0>返回的是生成器
#生成器是迭代器的一种可以使用for循环来操作
# for item in res:
# 	print(item)

#也可以使用next来操作
# print(next(res))
# print(next(res))
# print(next(res))
# print(next(res))
# print(next(res))

#还可以使用list来操作
print(list(res))#[1, 9, 25, 49, 9604]
3、元祖的生成器yield关键字

yield关键字使用在生成器函数中,
yield和函数中的return很像
yield函数和return一样,执行到这个关键字后,会把结果返回。
和return不一样,yield会返回结果,并记住当前代码的执行位置,下一次调用时会从上一次离开的位置继续向下执行。而return是重新执行

执行过程:
1、第一次调用迭代器
走到当前的生成器函数中,遇到了yield1,把1返回,并且记住当前的执行状态(位置),暂停执行,等待下一次的调用
2、第二次去调用迭代器
从上一次遇到的yield位置开始执行,遇到了yield2,把2返回,并记住状态,暂停执行,等待下一次调用
3、第三次去调用迭代器
从上一次遇到的yield位置开始执行,遇到yield3,把3返回,并记住了状态,暂停执行,等待下一次调用
如果在最后有调用了迭代器,会从上一次的yield位置开始,后面没有了,直接超出范围,报错

def myyield():
	print('hello')
	yield 1
	print('world')
	yield 2

res=myyield()
print(list(res))

for item in res:
	print(item)
4、字典及定义

键值对
键不能重复<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值