首页 > 其他分享 >数据类型----元组、集合的内置方法

数据类型----元组、集合的内置方法

时间:2023-02-21 21:22:20浏览次数:26  
标签:set 22 33 数据类型 元组 ---- tuple1 print

一、元组tuple

元组与列表类似,也是可以存多个任意类型的元素,不同之处在于元组的元素不能修改,即元组相当于不可变的列表,用于记录多个固定不允许修改的值,单纯用于取

1.1 定义

"""
    小括号括起来,内部存放多个元素,元组之间逗号隔开,元素不可改变,元素类型不能是任意的,
"""
定义:t1 = (11, 22, 33, 44)
# 强调:如果元组内只有一个值,则必须加一个逗号,否则()就只是包含的意思而非定义元组
countries = ('kevin',)  
print(countries)  # 本质:countries = tuple('kevin')

1.2 数据类型转变

# 但凡能被for循环的遍历的数据类型都可以传给tuple()转换成元组类型
# print(tuple(123))错误
# print(tuple(123.11))错误
print(tuple('hello'))  # ('h', 'e', 'l', 'l', 'o')
print(tuple([11, 22, 33, 44]))  # (11, 22, 33, 44)
print(tuple((1,2,3,4)))   # (1, 2, 3, 4)
print(tuple({'username':'kevin', 'age':19}))   # ('username', 'age')
print(tuple({111,222,33,444}))  # (33, 444, 222, 111)

1.3 使用

1.3.1 按索引取值(正向取+反向取):只能取,不能改否则报错!

tuple1 = (1, 'hhaha', 15000.00, 11, 22, 33)
# 1. 按索引取值(正向取+反向取):只能取,不能改否则报错!
print(tuple1[0])  # 1
print(tuple1[2])  # 15000.0

print(tuple1[-1])  # 33
print(tuple1[-2])  # 22
print(tuple1[-3])  # 11
'''不能修改值'''
# tuple1[0] = 666  # 报错:TypeError

1.3.2 切片(顾头不顾尾,步长)

# 2.切片(顾头不顾尾,步长)
print(tuple1[0:3])  # (1, 'hhaha', 15000.0)
print(tuple1[0:5:2])  # (1, 15000.0, 22)

1.3.3 长度len

# 3.长度len()
print(len(tuple1))  # 6

1.3.2 切片(顾头不顾尾,步长)


1.3.4.成员运算 in 和 not in

# 4.成员运算 in 和 not in
print('hhaha' in tuple1)  # True
print('hhaha' not in tuple1)  # False

1.3.5.循环

for line in tuple1:
    print(line)
    

1.3.6. 元组笔试题

'''元组笔试题'''
# 当元组内部哪怕是一个元素,也要加一个逗号隔开,否则就不是元组类型
t = (111)
t1 = (111.11)
t2 = ('hello')
t3 = ('hello', )
l = ['hello', ]  # list

print(type(t))  # <class 'int'>
print(type(t1))  # <class 'float'>
print(type(t2))  # <class 'str'>
print(type(t3))  # <class 'tuple'>
print(type(l))  # <class 'list'>

'''
  容器类型:可以存放多个元素的数据类型都是容器类型
  推荐:如果是容器类型,内部就算有一个元素,也最后都加上一个逗号隔开
'''

二、集合set

2.1 定义

集合、list、tuple、dict一样都可以存放多个值,但是集合主要用于:去重、关系运算

"""
	大括号括起来,内部存放多个元素,元素之间逗号隔开,
	1.数据类型只能是不可变的类型
	2.集合内没有重复的元素
	3.集合内元素无序
	
	4.不能直接取值
"""
# 定义:
	s = {11,22,33,44}
    
    
# 如何定义一个空集合
s = {11,22,33,44}
print(type(s))  # set
# 定义空集合
print(type({}))  # dict
s1 = set()
print(type(s1))  # set

2.2 数据类型转换

# 但凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型
s = set([1,2,3,4])
print(s)  # {1, 2, 3, 4}

print(set((1,2,3,4)))  # {1, 2, 3, 4}

print(set({'name':'jason','age':20}))  # {'name', 'age'}
 
print(set('hello'))  # {'e', 'o', 'l', 'h'}

2.3 使用

2.3.1 关系运算

我们定义两个集合friends与friends2来分别存放两个人的好友名字,然后以这两个集合为例讲解集合的关系运算

friends1 = {"zero", "kevin", "jason", "egon"}  # 用户1的好友们
friends2 = {"Jy", "ricky", "jason", "egon"}    # 用户2的好友们

两个集合的关系如下图所示

# 1.并集(|):求两个用户所有的好友(重复好友只留一个
print(friends1 | friends2)
# 返回:{'egon', 'Jy', 'jason', 'kevin', 'ricky', 'zero'}

# 2.交集(&):求两个用户的共同好友
print(friends1 & friends2)
# 返回:{'egon', 'jason'}

# 3.差集(-):
# 求用户1独有的好友
print(friends1 - friends2)
# 返回:{'zero', 'kevin'}
# 求用户2独有的好友
print(friends2 - friends1)
# 返回:{'Jy', 'ricky'}

# 4.对称差集(^) # 求两个用户独有的好友们(即去掉共有的好友)
print(friends1 ^ friends2)
# 返回:{'zero', 'kevin', 'Jy', 'ricky'}

# 5.值是否相等(==)
print(friends1 == friends2)  # False


# 6.父集:一个集合是否包含另外一个集合
# 6.1 包含则返回True
print({1, 2, 3} > {1, 2})  # True
print({1, 2, 3} >= {1, 2})  # True
print({1, 2, 3} >= {1, 2, 3})  # True

# 6.2 不存在包含关系,则返回False
print({1, 2, 3} > {1, 3, 4, 5})  # False
print({1, 2, 3} >= {1, 3, 4, 5})  # False

# 7.子集
print({1, 2} < {1, 2, 3})  # True
print({1, 2} <= {1, 2, 3})  # True
print({1, 2, 3} <= {1, 2, 3})  # True
print({1, 2, 3, 4} <= {1, 2, 3})  # False

2.3.2 去重

集合去重复有局限性:

  1. 只能针对不可变类型
  2. 集合本身是无序的,去重之后无法保留原来的顺序
# 例1:
ll = [11, 22, 33, 44, 22, 33, 88, 55, 33, 999, 22, 11]
# 将列表转成了集合
s = set(ll)
# 集合没有重复值
print(s)  # {33, 999, 11, 44, 22, 55, 88}
# 再将集合转回列表
print(list(s))  # [33, 999, 11, 44, 22, 55, 88]

# 例2:
l1 = ['kevin', 'tony', 'jack', 'jack', 'jack', 'jack']
print(set(l1))  # {'tony', 'kevin', 'jack'}
print(list(set(l1)))  # ['tony', 'kevin', 'jack']

2.3.3 其他操作

1.长度

# 长度
s = {'a', 'b', 'c'}
print(len(s))  # 3

2.成员运算

# 成员运算
print('c' in s)  # True
print('x' in s)  # False

3.循环

# 循环
s = {1, 2, 3, 4, 5, 6, 7, 8}
for i in s:
    print(i)

标签:set,22,33,数据类型,元组,----,tuple1,print
From: https://www.cnblogs.com/zjyao/p/17142235.html

相关文章

  • 公共字段自动填充功能
    一、问题分析   二、代码实现                ......
  • 理解树状数组这一篇文章就够啦
    树状数组TODO:二维树状数组维护不可差分信息补充题目前言在阅读本文之前,您可能需要先了解位运算、二叉树以及前缀和与差分等相关知识本文中,若无特殊说明,数列下......
  • 父传子 props其他使用方法,混入 mixin,插件,Vue操作cookie,vue Router 设置跳转路由,v
    目录父传子props其他使用方法混入mixin页面组件局部使用混入对象main全局使用插件使用方法1.新建包plugins2.页面组件Vue操作cookie的几种方式1.localStorage永久存储,除......
  • k8s服务端二进制部署-kubectl
    本文章是 k8s二进制高可用集群部署 的分支。详细步骤请参考目录。二进制下载地址压缩包下载:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG......
  • acwing 亲戚
    题目或许你并不知道,你的某个朋友是你的亲戚。他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子。如果能得到完整的家谱,判断两个人是否是亲戚应该是可行的,但如果两个......
  • 随机过程,马尔科夫假设,马尔科夫链,隐含马尔科夫模型,独立输出假设
    本文所有内容都摘自吴军的《数学之美》 ......
  • Java网络编程
    UDP和TCP网络协议,基于Socket的UDP和TCP网络编程的介绍。Author:MsuenbDate:2023-02-21网络基础知识每个计算设备上都有若干个网卡,每个网卡上有(全球唯一)单独的硬件......
  • vue3 + ts
    安装#Vite需要Node.js版本>=12.0.0npminitvite@latest#根据相关问题进行回答#需要选择框架以及使用语言配置项目名#进入项目目录cdvite-project#......
  • IO流
    File与IO流Author:MsuenbDate:2023-02-21File类java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关File能新建、删除、重命名文件和目录,但不能访问文......
  • Android Studio的下载与安装
    一、下载下载官网:DownloadAndroidStudio&AppTools-AndroidDevelopers  点击绿色下载 ......