IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> python基础补漏-数据类型4-元组-集合 -> 正文阅读

[开发工具]python基础补漏-数据类型4-元组-集合

4,元组

元组是一个有序且不可变的容器,可以存放多个不同类型的元素

4.1定义

tuple = (1,2,3,4,[1,2,3,4])
#这个元组不能改变,里面的列表也不能更换,但是可以给列表增加元素
?
# 面试题
1. 比较值 v1 = (1) 和 v2 = 1 和 v3 = (1,) 有什么区别?
v1 = (1)
print(v1)
print(type(v1))
?
v2 = 1
print(v2)
print(type(v2))
?
v3 = (1,)
print(v3)
print(type(v3))
#v1和v2都是整型,v3是元组
?
2. 比较值 v1 = ( (1),(2),(3) ) 和 v2 = ( (1,) , (2,) , (3,),) 有什么区别?
v1 = ( (1),(2),(3) )
print(v1)
print(type(v1))
#区别:输出的结果不同,v1输出的结果是整型,v2输出的结果是元组
v2 = ( (1,) , (2,) , (3,),)
print(v2)
print(type(v2))
?

4.2公共功能

1,相加,两个元组相加生成一个新的元组

t2 = ("赵四","刘能") + ("宋晓峰","范德彪")
print(t2) # ("赵四","刘能","宋晓峰","范德彪")
?
t = ("赵四","刘能")
t1 = ("宋晓峰","范德彪")
t3 = t1 + t
print(t3) # ("赵四","刘能","宋晓峰","范德彪")

2,相乘,元组*整型,将元组中的元素再创建N份并生成一个新的列表

t = ("赵四","刘能") * 2
print(t) # ("赵四","刘能","赵四","刘能")
?
t1 = ("赵四","刘能")
t2 = t1 * 2
print(t1) # ("赵四","刘能")
print(t2) # ("赵四","刘能","赵四","刘能")

3,获取长度

tuple = ("范德彪","刘华强",'尼古拉斯赵四',)
print( len(tuple) )

4,索引

t = ("范德彪","刘华强",'尼古拉斯赵四',)
print( t[0] )
print( t[2] )
print( t[3] )   #报错,超出索引范围

5,切片

t = ("范德彪","刘华强",'尼古拉斯赵四',)
print( t[0:2] )
print( t[1:] )
print( t[:-1] )

6,步长

t = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
print( t[1:4:2] )
print( t[0::2] )
print( t[1::2] )
print( t[4:1:-1] )
#所有的步长产生的都是新的数据
# 字符串 & 元组只能通过步长来反转
t = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
data = t[::-1]
?
# 列的两种反转方式
user_list = ["范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能"]
data = user_list[::-1]
?
user_list.reverse()
print(user_list)

7,for循环

t = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
for item in t:
    print(item)
t = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
for item in t:
 if item == '刘华强':
     continue
 print(name)

目前:只有 str、list、tuple 可以被for循环。 "xxx" [11,22,33] (111,22,33)

# len + range + for + 索引
t = ("范德彪","刘华强",'尼古拉斯赵四',"宋小宝","刘能")
for index in range(len(t)):
 ? ?item = t[index]
 ? ?print(item)

4.3,转换

只有字符串和列表可以转换为元组

data = tuple(str/list)
name = "木木木"
data = tuple(name)
print(data) # 输出 ("木","木","木")
name = ["木木",18,"python"]
data = tuple(name)
print(data) # 输出 ("木木",18,"pythonav")

4.4其他

tu = ( '1', '2', ('3','4') )
tu1 = tu[0]
tu2 = tu[1]
tu3 = tu[2][0]
tu4 = tu[2][1]
tu5 = tu[2][1][3]
?
print(tu1) # 1
print(tu2) # 2
print(tu3) # 3
print(tu4) # 4

5,集合

5.1定义

集合是一个无序,可变,不允许数据重复的容器

s1 = { 11, 22, 33, "alex" }

无序,无法通过索引取值

可变,可以添加和删除元素

不允许数据重复

注意!:

定义空集合时,只能用a = set(),不能用a = {}

#定义空列表
l1 = []
l2 = list()
?
#定义空元组
t1 = ()
t2 = tuple()
?
#定义空集合
s1 = set()
?
#定义空字典
d1 = {}
d2 = dict()

5.2独有功能

1,添加元素

set.add(element)

2,删除元素

set.discard(element)

3,交集

s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
?
s3 = s1.intersection(s2)    #取交集方式一
s4 = s1 & s2                #取交集方式二
print(s3,s4)

4,并集

s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
?
s3 = s1.union(s2)           #取并集方式一
s4 = s1 | s2                #取并集方式二
print(s3,s4)

5,差集

s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
?
s3 = s1.difference(s2)          #方式一,s1中有且s2中没有的值
s4 = s1 - s2                    #方式二,s1中有且s2中没有的值
print(s3,s4)
?
s5 = s2 - s1                    #方式一:差集,s2中有且s1中没有的值
s6 = s2.difference(s1)          #方式二:差集,s2中有且s1中没有的值

5.3公共功能

1,减,计算差集

s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
?
s4 = s1 - s2    
s5 = s2 - s1    
print(s4, s5)

2,&计算交集

s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
?
s4 = s1 & s2                #取交集方式二
print(s4)

3, | 计算并集

s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
?
s4 = s1 | s2                
print(s4)

4,长度

s1 = {1,2,3,4,5}
data = len(s1)
?
print(data)

5,for循环

s1 = {1,2,3,4,5}
for data in s1:
    print(data)

5.4类型转换

lis1 = [1,2,2,3,44,5]
l = set(lis1)
?
print(l)
#{1,2,3,44,5},转换为集合会去重

5.5其他

5.5.1集合存储原理

v = set()
v.add("1")

1,利用哈希函数把“1”转换成一个数值

2,对这个数值取余数

3,将元素放在哈希表的第(余数)个索引位置

5.5.2元素必须可哈希

可哈希的数据类型:int,bool,str,tuple,

不可哈希的数据类型:set,list

#判断方法
v = hash("1")
print(v)

5.5.3查找速度快

因存储原理特殊,集合的查找效率非常高(数据量大了才明显)。

  • user_list = ["武沛齐","alex","李璐"]
    if "alex" in user_list:
     ? ?print("在")
    else:
     ? ?print("不在")
     ? ?
     ? ?
    user_tuple = ("武沛齐","alex","李璐")
    if "alex" in user_tuple:
     ? ?print("在")
    else:
     ? ?print("不在")
  • 效率高

    user_set = {"武沛齐","alex","李璐"}
    if "alex" in user_set:
     ? ?print("在")
    else:
     ? ?print("不在")

5.5.4 对比和嵌套

类型是否可变是否有序元素要求是否可哈希转换定义空
listlist(其他)v=[]或v=list()
tupletuple(其他)v=()或v=tuple()
set可哈希set(其他)v=set()
data_list = [
 ? ?"alex",
 ? ?11,
 ?  (11, 22, 33, {"alex", "eric"}, 22),
 ?  [11, 22, 33, 22],
 ?  {11, 22, (True, ["中国", "北京"], "沙河"), 33}
]

注意:由于True和False本质上存储的是 1 和 0 ,而集合又不允许重复,所以在整数 0、1和False、True出现在集合中会有如下现象:

v1 = {True, 1}
print(v1) ?# {True}
?
v2 = {1, True}
print(v2) ?# {1}
?
v3 = {0, False}
print(v3) ?# {0}
?
v4 = {False, 0}
print(v4) ?# {False}

None

1,节省空间

v1 = None
V2 = None
...
v1 = [1,2,3]
v2 = [4,5,6]

2,None转换为布尔值为False

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-12-23 15:56:13  更:2021-12-23 15:56:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:21:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码