python基础之元组函数(11)

系统 1717 0

元组:
一组有序数据的组合。元组不可以修改。
元组的定义:

  • 空元组:

    • 变量 = () 或者 变量= tuple()
  • 单个元素的元组
    变量 = (值,)

  • 具有多个数据的元组

    • 变量 = (值,值…) 或者 变量 = tuple(容器数据)
      基本操作:

只可以使用索引访问元组,不可以进行其他操作。
tuple1=(“你”,“我”,“他”,(“你得”,“我的”))
print(tuple1[3][1])
分片: 操作和列表一致。

tuple1=(“你”,“我”,“他”,(“你得”,“我的”))
print(tuple1[0:2:2])
常用函数
max() 获取元组中的最大值
min() 获取元组中的最小值
len() 获取元组的长度
tuple() 创建元组或者将其他数据转化为元组
元组的遍历: 同列表一样,嵌套元组和嵌套列表也一致

tuple1=(“你”,“我”,“他”,(“你得”,“我的”))
for name in tuple1:
for i in name:
print(i)
元组推导式:

元组推导式的结果不是元组,而是生成器(生成器需要操作才会得到结果)
语法同列表推导式一样
基本推导式: 结果变量 = (变量 for 变量 in 元组)

from collections import Iterator
res=(i*i for i in range(6))
print(res,type(res))
print(isinstance(res,Iterator))
print(next(res))
print(next(res))
print(next(res))
print(next(res))

for i in res:
print(i)

print(tuple(res))

元组除了不能修改和删除,其他的和列表相关操作一模一样,
元组函数可以使用 index 和 count,只能是元组相关的获取操作
比如更改,删除,排序,翻转,清空都不可以
tuple=(1,2,3,4,5)
res=tuple.index(2)
print(res)

tuple=(1,2,3,4,5,2,2)
res=tuple.count(2)
print(res)
元组推导式是生成器(generator)
定义:生成器是特殊的迭代器,可以自定义.按照某种算法推算下一个数据,只需往内存里存一个生成器,节省空间
语法:(1)里面是推导式,外面是()的是生成器
(2)含有yield关键字的函数是生成器函数,它可以返回一个迭代器,换句话说,生成器是一个返回迭代器的函数。
def func():
yield 1
print(“一次”)
yield 2
print(“二次”)
yield 3
print(“三次”)
res=func()
print(next(res))
print(next(res))
print(next(res))

for i in res:
print(i)

print(tuple(res))
yield 有点像 return
共同点在于:执行到这句话会把值返回出去
不同点在于:再次执行生成器时会从上一次yield执行的位置继续向下走,它会记住上一次离开时的状态.
每次返回,都会记住当前代码执行的位置,再次调用的时候会从上次位置继续向下执行
集合
确定的一组无序数据的组合。

特征:
1.由多个数据组成的复合型数据(容器类数据) 2.集合是没有顺序的

集合的操作:

1.创建集合

空集合 变量 = set()

具有多个数据的集合 变量 = {数据,数据,数据…}

1.集合创建时如果存在相同的数据,集合会只保留一份。

2.集合可以存放的数据类型有Number,String,Tuple,冰冻集合类型

集合没有添加,获取,删除及修改的【基本操作】!

集合的序列操作:由于集合数据比较特殊,集合操作非常少

成员检测
in
数据 in 集合

            
                  not in
        数据 not in 集合

            
          

集合的序列函数:
len() 检测容器的长度

            
              max()   获取容器中的最大值

min()  获取容器中的最小值

set()   创建空集合或者将其他数据类型转换为集合

            
          

集合的遍历操作: 只能使用for…in 来遍历集合
set={1,2,4,5,6,8,10}
for i in set:
print(i)
集合的推导式/集合内涵:
普通的集合推导式: 变量 = {变量 for 变量 in 集合}
res={i 2 for i in {1,2,3,4}}
print(res)
带有判断条件的集合推导式
变量 = {变量 for 变量 in 集合 if 条件表达式}
res={i
2 for i in {1,2,3,4,5,9,10} if i%2==0}
print(res)
多循环的集合推导式:
变量 = {变量1和变量2的操作 for 变量1 in 容器 for 变量2 in 容器}
res={i*j for i in range(1,5) for j in range(2,3)}
print(res)
带有判断条件的多循环推导式:
变量 = {变量1和变量2的操作 for 变量1 in 容器 for 变量2 in 容器 if 条件表达式}
集合专用的函数:

            
              add()   向集合中添加一个元素/数据
    格式:集合.add(数据)
    返回值:None
    注意:操作直接修改原有集合。

            
          

set1={1,2,3,4,5,6}
set1.add(7)
print(set1)

            
              pop()   随机删除集合中的一个元素/数据
    格式:集合.pop()
    返回值:随机删除的数据
    注意:操作直接修改原有集合。

            
          

set1={1,2,3,4,5,6}
set1.pop()
print(set1)

            
              remove()    删除指定的数据,数据不存在会报错
    格式:集合.remove(数据)
    返回值:None
    注意:操作直接修改原有集合。

            
          

set1={1,2,3,4,5,6}
set1.remove(1)
print(set1)

            
              discard()  删除指定的数据,数据不存在不进行操作
    格式:集合.discard(数据)
    返回值:None
    注意:操作直接修改原有集合。

            
          

set1={1,2,3,4,5,6}
set1.discard(1)
print(set1)

            
              clear() 清空集合
    格式:集合.clear()
    返回值:None
    注意:操作直接修改原有集合。

            
          

set1={1,2,3,4,5,6}
set1.clear()
print(set1)

            
              copy()  复制集合
    格式:集合.copy()
    返回值:None
    注意:复制的集合和原集合内容一样,但是不是一个集合

            
          

set1={1,2,3,4,5,6}
set2=set1.copy()
set1.add(7)
print(set1)
print(set2)

            
              #集合运算符:
& 交集

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set1&set2
print(res)

            
              | 并集

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set1|set2
print(res)

            
              - 差集

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set1-set2
print(res)

            
              ^ 对称差集

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set1^set2
print(res)

            
              #集合运算函数:
差集:difference()  *
格式:集合1.difference(集合2)
返回值:差集的集合

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.difference(set1)
print(res)

            
              更新差集:difference_update()
格式:集合1.difference_update(集合2)
返回值:None
注意:所谓更新差集,就是计算差集之后将结果重新赋值给第一个集合的变量而已

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
set2.difference_update(set1)
print(set2)

            
              交集:intersection()
格式:集合1.intersection(集合2)
返回值:交集的集合

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.intersection(set1)
print(res)

            
              更新交集:intersection_update()
格式:集合1.intersection_update(集合2)
返回值:None
注意:更新交集,就是计算交集之后将结果重新赋值给第一个集合的变量

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
set2.intersection_update(set1)
print(set2)

            
              并集:union()
格式:集合1.union(集合2)
返回值:并集结果

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.union(set1)
print(res)

            
              更新并集:update()
格式:集合1.update(集合2)
返回值:None
注意:更新并集,就是计算并集之后将结果重新赋值给第一个集合的变量

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
set2.update(set1)
print(set2)

            
              对称差集:symmetric_difference()
格式:集合1.symmetric_difference(集合2)
返回值:对称差集的集合

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.symmetric_difference(set1)
print(res)

            
              更新对称差集运算:symmetric_difference_update()
格式:集合1.symmetric_difference_update(集合2)
返回值:None
注意:计算对称差集的结果直接更新到集合1的变量当中

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
set2.symmetric_difference_update(set1)
print(set2)

            
              检测是否是超集:issuperset()
格式:集合1.issuperset(集合2)
返回值:布尔值

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.issuperset(set1)
print(res)

            
              检测是否是子集:issubset()
格式:集合1.issubset(集合2)
返回值:布尔值

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.issubset(set1)
print(res)

            
              检测是否不相交的函数: isdisjoint()
格式:集合1.isdisjoint(集合2)
返回值:布尔值
注意:集合不相交结果为True,集合相交,结果为False

            
          

set1={1,2,3,4,5,6}
set2={3,4,5,6,7,9,10}
res=set2.isdijoint(set1)
print(res)

冰冻集合/固定集合:一旦创建就不可以进行修改的集合。一种数据类型。

如果把集合比作列表,冰冻集合就是元组。

#创建冰冻集合
空的冰冻集合:
变量 = frozenset()

创建具有数据的冰冻集合
变量 = frozenset(容器数据)

冰冻集合的作用:
为集合的操作提供一个不可以改变的对照集合。

冰冻集合除了不能修改之外,其余和集合一样!

copy() 可以使用
difference() 差集 可以使用
difference_update() 更新差集 不可以使用
intersection() 交集 可以使用
intersection_update()更新交集 不可以使用
union() 并集 可以使用
update()更新并集 不可以使用
issuperset() 检测超集 可以使用
issubset() 检测子集 可以使用
isdisjoint() 检测是否不相交 可以使用
symmetric_difference()可以使用(对称差集)
symmetric_difference_update()不可以使用(更新对称差集)

list1 = [“小王”,“小八”,“小霸王”,“小鸟”]
set1 = frozenset(list1)
set2 = frozenset((“小霸王”,“孙策”,“霸王”,“项羽”))
res = set1.intersection(set2)
print(res)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论