当前位置: 首页 > article >正文

从0开始学Python-day6

Python元组(tuple)

Python 的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号 ( ),列表使用方括号 [ ]。

1、创建元组

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

1.1 存放相同类型的数据

tup1 = (1, 2, 3, 4, 5 )

1.2 存放不同类型的数据

tup2 = ( 'hqyj', 2004)

1.3 不需要括号也可以

tup3 = "a", "b", "c", "d"

1.4 只包含一个元素

元组中只包含一个元素时,需要在元素后面添加逗号 ,否则括号会被当作运算符使用:

tup1 = (50)
tup2 = (50,)

2、访问元组

元组与字符串类似,下标索引从 0 开始,可以进行截取,组合等。

tup1 = ('python', 'hqyj', 100, 200)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print (tup1[0])#python
print (tup2[1:5])#(2, 3, 4, 5)
print (tup2[:4])#(1, 2, 3, 4)
print (tup2[2:])#(3, 4, 5, 6, 7)

3、修改元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz') 
​
# 创建一个新的元组
tup3 = tup1 + tup2
print (tup3)
​
# 以下修改元组元素操作是非法的。
# tup1[0] = 100 

4、删除元组

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组(删除的是变量)

tup = ('openAI', 'hqyj', 100, 200) 
print (tup)
del tup
print (tup)#name 'tup' is not defined

5、元组运算符

与字符串一样,元组之间可以使用 +、+=和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

Python 表达式结果描述
len((1, 2, 3))3计算元素个数
(1, 2, 3)+(4, 5, 6)(1, 2, 3, 4, 5, 6)连接得到一个新的元组
('Hi!',) * 4('Hi!', 'Hi!', 'Hi!', 'Hi!')复制
3 in (1, 2, 3)True元素是否存在
for x in (1, 2, 3): print (x)1 2 3迭代

6、元组不可变

为什么要有元组:函数和元组往往一起使用,用于设计API多参数/多返回值的场景。

元组和列表可以互相转换

所谓元组的不可变指的是元组所指向的内存中的内容不可变。

tup = (1, 2, 3, 4, 5, 6, 7)
tup[1] = 100
print(tup)#报错'tuple' object does not support item assignment

7、元组常用API

Python元组包含了以下内置函数

序号方法描述
1len(tuple)返回元组中元素个数。
2max(tuple)返回元组中元素最大值。
3min(tuple)返回元组中元素最小值。
4tuple(list)将列表转换为元组。

Python字典(dict )

字典是一种可变容器模型,且可存储任意类型对象。

字典的每个键值对( key:value )用冒号分割,每个对之间用逗号分割,整个字典包括在花括号 {} 中

d = {key1 : value1, key2 : value2, key3 : value3 }

1、创建字典

dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字。

键名相同,最后的值会覆盖前面的值。(键名不能一样)。

字典中键值对的 键名可以是不可变的数据类型,键值可以是任何数据类型

d1 = {}#创建空字典
d2 = dict()#使用内建函数 dict()创建字典
d3 = {"name":"karen","age":23}
d4 = dict({"name":"jack","age":24})

print(d3)# 打印字典
print(len(d3))# 查看字典的数量
print(type(d3))# 查看类型

2、访问字典里的值

把相应的键放入到方括号中。键名是字符串要加'',键名是列表不加''。(列表是在字典的基础上进行严格定义的)。列表有的功能字典不一定有,列表有slice函数,通过此函数实现切片功能。

字典的键无论是不是有顺序的数字,都不能切片,只能通过key取值。

mydic = {'Name': 'hqyj', 'Age': 7, 'Class': 'First'} 
print (mydic['Name'])
print (mydic['Age'])

如果用字典里没有的键访问数据,会输出错误

mydic = {'Name': 'hqyj', 'Age': 7, 'Class': 'First'} 
print (mydic['Alice'])

3、修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对。取字典中不存在的键报错,存数据到存在的键中就会更新,不存在的键中就会新增一对键值对。

mydic = {'Name': 'hqyj', 'Age': 7, 'Class': 'First'} 

mydic['Age'] = 8 # 更新
Agemydic['School'] = "华清" #添加信息  

print (mydic['Age'])
print (mydic['School'])

4、删除字典元素

能删单一的元素也能清空字典,清空只需一项操作clear

显式删除一个字典用del命令

mydic = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
 
del mydic['Name'] # 删除键 'Name'
mydic.clear()     # 清空字典

 
print (mydic['Age'])
print (mydic['School'])

del mydic         # 删除字典
x9={}#空值

5、字典键的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

mydic = {'Name': 'jack', 'Age': 27, 'Name': 'karen'}
print (mydic['Name'])

2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行

mydic1 = {97:"a",98:"b"}
mydic2 = {"name":"karen","age":27}
mydic3 = {['Name']: 'karen', 'Age': 27}
print(mydic3[['Name']])#报错unhashable type: 'list'

6、字典常用API

操作字典的函数:

序号函数描述
1len(dict)计算字典元素个数,即键的总数。
2str(dict)输出字典,可以打印的字符串表示。类型变成了字符串,网络传输数据时很有用。#JSON是一种字符串
3type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。

字典的方法:

序号函数及描述
1dict.clear()删除字典内所有元素
2dict.copy()返回一个字典的浅复制
3dict.fromkeys(seq)创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
4dict.get(key, default=None)返回指定键的值,如果键不在字典中返回 default 设置的默认值。取值。
5key in dict如果键在字典dict里返回true,否则返回false
6dict.items()以列表返回一个视图对象,键:键值
7dict.keys()返回一个视图对象
8dict.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default。建议直接写=
9dict.update(dict2)把字典dict2的键/值对更新到dict里,更新到dict里,重复的会覆盖
10dict.values()返回一个视图对象,输出键值
11pop(key,default)删除字典 key(键)所对应的值,返回被删除的值。不能删除不存在的键名
12popitem()返回并删除字典中的最后一对键和值。没有键值对了是不能删除的,不然报错

Python集合(set)

集合(set)是一个无序的不重复元素序列。

集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。

1、创建集合

可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或者也可以使用 set() 函数创建集合。

集合中可以保存不可变数据(字符串,数字,元组等),可以写入多个相同的数据,但是最后只会保存一次。可以去除列表中重复的元素。集合中的元素是无序的。

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

parame = {value01,value02,...}

set(value)

set1 = {1, 2, 3, 4}# 直接使用大括号创建集合
set2 = set([4, 5, 6, 7])# 使用 set()函数从列表创建集合
set3 = set((4, 5, 6, 7))# 使用 set()函数从元组创建集合
set({})#空集合

2、添加元素

将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。

s.add( x ) 添加元素到集合 ,字典,列表不能添加到集合中

s.update( x ) 添加元素到集合,且参数可以是列表,元组,字典等 ,x 可以有多个数据容器,用逗号分开(必须是可迭代的数据容器,比如列表,元组,字典)。会把元组中的元素(列表)添加进集合,会报错。字典转换为集合只取key值。

s1 = set((4, 5, 6, 7))
s1.add(100)
print(s1)
s1.update([200,300])
print(s1)

3、移除元素

s.remove( x ):将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。不能移除集合中不存在的元素。

s.discard( x ):将元素 x 从集合 s 中移除,如果元素不存在,不会发生错误。可以移除集合中不存在的元素。

s.pop():对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。

s1 = {10, 20, 30}
s1.remove(20)
print(s1)
s1.remove(40)#报错
s1 = {10, 20, 30}
s1.discard(20)
print(s1)
s1.discard(40)
s1 = {10, 20, 30}
s1.pop()
print(s1)

4、计算集合元素个数

len(s):计算集合元素个数

s1 = {10, 20, 30}
print(len(s1))

5、清空集合

s.clear():清空集合

s1 = {10, 20, 30}
s1.clear()
print(s1)

6、判断元素是否在集合中存在

x in s 判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。

s1 = {10, 20, 30}
print(20 in s1)

7、集合内置方法完整API

集合的方法

方法描述
add()为集合添加元素
clear()移除集合中的所有元素
copy()拷贝一个集合#深拷贝
difference()返回多个集合的差集,原来的集合不改变
difference_update()移除集合中的元素,该元素在指定的集合也存在。原来的集合改变了
discard()删除集合中指定的元素
intersection()返回集合的交集。原集合不改变。
intersection_update()返回集合的交集。原集合改变。(会操作原来的s15集合,保留阴影部分 (交集))
isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True(不相交),否则返回 False(相交)。
issubset()判断指定集合是否为该方法参数集合的子集。是子集则为True,不是子集则为False
issuperset()判断该方法的参数集合是否为指定集合的子集
pop()随机移除元素
remove()移除指定元素
symmetric_difference()返回两个集合中不重复的元素集合。并交叉。不修改原集合
symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。修改原集合。
union()返回两个集合的并集
update()给集合添加元素
len()计算集合元素个数

http://www.kler.cn/news/358834.html

相关文章:

  • Android视频编解码 MediaCodec使用(2)
  • 计算机毕业设计PySpark+Django深度学习游戏推荐系统 游戏可视化 游戏数据分析 游戏爬虫 Scrapy 机器学习 人工智能 大数据毕设
  • docker 和 containerd 关系
  • 现代开源个人航班跟踪系统AirTrail
  • 【OD】【E卷】【真题】【100分】热点网站统计(PythonJavaJavaScriptC++C)
  • string类的模拟实现
  • 软件压力测试如何进行?深圳软件测试机构分享
  • VsCode 如何自定义代码片段(Code Snippet)
  • 政府信息化项目验收检测有哪些注意事项?
  • Git-本地项目同步到远程仓库
  • Python游戏编程入门注-第2章2
  • Anzo Capital 昂首资本带你解读货币相关性
  • Spring MessageSource国际化原理
  • 自动化运维:提升效率与降低风险的关键
  • 【MySQL】提高篇—索引与性能优化:如何创建与管理索引
  • HTML5 语义元素
  • Flink系统架构和应用部署方式
  • 云函数+对象存储全包!MemFire Cloud让开发如此轻松
  • 功能强大且简单易用的实时算法视频监控,智慧快消开源了。
  • 数据挖掘示例