文章目录

  • 1. 元组(与列表最大的区别就是能否更改)
  • 2. 本不可修改元组,但这样就可以修改了
  • 3. 字典(dict类):键值对,无序(列表和元组都有序)
  • 4. 字典的循环遍历
  • 5. 特殊方法创建、取值字典
  • 6.在查询字典的键时,若键不存在,则创建该键
  • 7. pop()删除在字典中的用法
  • 8. 字典键值对修改的2种方法
  • 9. 键值对(key与value)的 in 用法
  • 10. 五大数据类型分类总结
  • 11. 集合的交叉、并、补集
  • 12. 字符串拼接的两种方法(百分号、format())

我们可能知道字符串、数字、列表、元组、字典是python中的五大基本数据类型。前面的文章已经介绍过数字、字符串、列表,这篇则是关于元组、字典和集合这方面的一些重点知识。(还会提到元组的修改)

1. 元组(与列表最大的区别就是能否更改)

列表(list类):有序,中括号,元素可以被修改
元组(tuple类):有序,小括号,元素不可被修改且不能删除增加

#元组定义一般在结尾多加一个逗号,以区分方法中的参数
tu = (111,22,"alex",(11,22),44,) #定义一个元组
#元组可以索引,可以切片
s = "asjfdkjkfhg"
li = ["safj",123,"alex"]
tu = ("alex","age",43,)
v = tuple(s)  #字符串可以转成元组
v1 = tuple(li)  #列表可以转成元组
v2 = list(tu)  #元组也可以转成列表,而且顺序不会改变
print(v)
print(v1)
print(v2)

结果是:
(‘a’, ‘s’, ‘j’, ‘f’, ‘d’, ‘k’, ‘j’, ‘k’, ‘f’, ‘h’, ‘g’)
(‘safj’, 123, ‘alex’)
[‘alex’, ‘age’, 43]

2. 本不可修改元组,但这样就可以修改了

tu = (11,33,"alex",[1314,22],44,True,(13,"一世"),22,)
print(tu)
tu[3][1] = 520  #列表本身可以修改,所以元组里的列表也可以修改
#tu[6][0] = "一生"----->>>>同理,元组不可修改,元组中的元组也不可修改
print(tu)

结果是:
(11, 33, ‘alex’, [1314, 22], 44, True, (13, ‘一世’), 22)
(11, 33, ‘alex’, [1314, 520], 44, True, (13, ‘一世’), 22)
Ps:元组的第一级元素不可修改,但二、三…级的元素可以修改

tu = (11,33,"alex",[1314,22,['trust me']],44,True,(13,"一世"),33,)
tu[3][1] = 520
tu[3].insert(0,'5发4')  #在指定的0位置插入
n1 = tu.count(33)  #计算某元素出现次数
n2 = tu.index(44)  #返回某元素的索引,即下标
print(tu)
print(n1)
print(n2)

结果是:
(11, 33, ‘alex’, [‘5发4’, 1314, 520, [‘trust me’]], 44, True, (13, ‘一世’), 33)
2
4

3. 字典(dict类):键值对,无序(列表和元组都有序)

列表、元组、字典三者可以无限嵌套,像这样:

info = {"k1": "v1","k2": "v2","True": "v3","k3": [11,22,33,{"kk1": "vv1","kk2": "vv2","kk3": (11,22,)       }],"k4" : (11,22,33,44,)
}
#找到11这个数:
v = info["k3"][3]["kk3"][0]
print(v)
#字典的删除操作:
del info["k1"]  #会将键值都删除

Ps:数字,字符串,元组,布尔值(要注意1和0是否重复)都可以作为字典的key,而列表和字典不可以作为key,因为它们可修改,是动态的

4. 字典的循环遍历

for item in info.keys():  #循环key,就是循环键值对print(info)
for item in info.values():  #循环values,即值print(item)for item in info.keys():    #key与value都循环:print(item,info[item])

因为这里的结果太长了,显得冗余,就不展示了。
关于key与value都循环还有一种简便的写法

#py简化:
for k,v in info.items():  #把键值对作为一个itemsprint(k,v)

5. 特殊方法创建、取值字典

#根据序列来创建字典,指定的值都为第二个参数
dic = dict.fromkeys(["k1",123,"k3"],123)
print(dic)#用dic.get()的好处是,若key对应的值不存,不会报错:
v = dic.get('k11111')
print(v)  #默认返回值是None
v1 = dic.get('k11111',1111)  #若不存在'k11111',则返回1111
print(v1)

结果是:
{‘k1’: 123, 123: 123, ‘k3’: 123}
None
1111

6.在查询字典的键时,若键不存在,则创建该键

dic.setdefault(key,[]).append(value)

这个语句可以很好得解决字典中键的查询问题,同时加入该键值对。

7. pop()删除在字典中的用法

pop()删除最大的好处就是删完了可以将值保存个一个变量

dic = {"k1": "v1""k2": "v2"
}
v = dic.popitem()  #随机删除一个键值对并默认将value赋值给v
print(dic,v)
k,v = dic.popitem()  #随机删除一个键值对并默认将key赋值给k,将value赋值给v

结果是:
{‘k1’: ‘v1’} (‘k2’, ‘v2’)
k1 v1

8. 字典键值对修改的2种方法

#设置值,已存在就不设置,获取原来的值;不存在就设置,获取设置后的值:
dic = {"k1": "v1","k2": "v2"
}
v = dic.setdefault("k1111",123)
print(dic,v)
dic.update(k1=123,k3=345,k5=322)  #更新dic字典,若不存在的key,则添进去
print(dic)

结果是:
{‘k1’: ‘v1’, ‘k2’: ‘v2’, ‘k1111’: 123} 123
{‘k1’: 123, ‘k2’: ‘v2’, ‘k1111’: 123, ‘k3’: 345, ‘k5’: 322}
很明显,字典中加入元素也是无序的

9. 键值对(key与value)的 in 用法

dic = {"k1": "v1"
}
v = "k1" in dic
vv = "v1" in dic.values()
print(v,vv)

结果为:True True

  1. 我们都知道布尔值中的1是真,0是假,其实还有很多False,
    布尔值中的假:
    None “” () [] {} 0

10. 五大数据类型分类总结

到此为止,五大数据类型就都总结完了,这里再简单分一下类
按是否可变来分
可变:列表、字典、集合
不可变:字符串、数字、元组
s = frozenset(‘hello’) #定义不可变类型集合
s = set(‘hello’) #正常集合是可变的
按访问顺序来分
直接访问:数字
顺序访问:字符串、列表、元组
映射访问:字典

  1. 再介绍一种数据类型,集合
    (集合:花括号,不重复,无序,集合中元素必须是不可变类型
s = {"alex",11,33,22,"sb"}
s = set("hello")  #结果是'e','l','h','o'   #无序且不重复
s.add('3')  #添加元素
s.pop()  #因为无序,所有会随机删除一个元素
print(s)

结果是:
{‘l’, ‘o’, ‘3’, ‘e’}
Ps:第二步,将原来的一整串集合设置成了分开放进去的字符串,因为集合不重复,所以集合变成只有4个元素,每个元素都是一个字符

11. 集合的交叉、并、补集

s = {"alex",11,33,22,"sb"}
s.remove('sb')  #指定删除
s.discard('sbbbb')  #不存在时不会报错,相当于不操作
s1 = {33,22,11,'大黄蜂','鸡排饭','猪'}
print(s.union(s1))  #求s与s1的并集
print(s | s1)  #求s与s1的并集
print(s - s1)  #求s与s1的差集,s独有的
print(s & s1)  #求s与s1的交集,s与s1都有的
print(s ^ s1)  #求s与s1的交叉补集,s独有与s1独有组成的集合

结果是:
{33, ‘alex’, 11, ‘猪’, 22, ‘鸡排饭’, ‘大黄蜂’}
{33, ‘alex’, 11, ‘猪’, 22, ‘鸡排饭’, ‘大黄蜂’}
{‘alex’}
{33, 11, 22}
{‘alex’, ‘鸡排饭’, ‘大黄蜂’, ‘猪’}

12. 字符串拼接的两种方法(百分号、format())

#百分号拼接类似C语言中的输出变量
msg = 'I am %s my hobby is %s' %('Ross,','playing game')
print(msg)#常用格式化之format后类似一个元组,下标从0开始,多余的舍弃
tpl = "i am {1}, age {2}".format("seven","Andy",18)
print(tpl)#格式化保留小数点:
a = 98.32425545443
tp2 = "我有{:.2f}%的可能性会揍你".format(a)
print(tp2)

结果是:
I am Ross, my hobby is playing game
i am Andy, age 18
我有98.32%的可能性会揍你

初学者python笔记(元组、字典、集合详解)相关推荐

  1. Python列表/元组/字典/集合详解

    本文是对Python中的列表.元组.字典.集合知识的梳理总结,将Python的重要知识点梳理成条,通过一个简单的员工管理系统(EMS)实战,可以深入的了解Python的基本知识.本文基本上涵盖了在日常 ...

  2. python列表元组字典集合实验心得_python学习小总结(列表、元组、字典、集合、字符串)...

    ---恢复内容开始--- 一.列表(list) 1.添加 append():追加,在列表末尾添加元素. 列表名.append(添加的元素) extend():扩展,在列表末尾添加元素. 列表名.ext ...

  3. Python 列表元组字典集合

    列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片.合并.删除等操作 可通过索引来向指定位置插入元素 可通过po ...

  4. python set_Python的set集合详解

    叶湘伦:[文字篇]如何系统地自学 Python?​zhuanlan.zhihu.com Python 还包含了一个数据类型 -- set (集合).集合是一个无序不重复元素的集.基本功能包括关系测试和 ...

  5. Python基础-元组字典集合

    文章目录 一.tuple元组 1.概述 2.创建元组 3.元组元素的访问 4.元组操作 5.元组功能 6.二维元组 二.字典dict 1.概念 2.定义字典 三.set集合 1.概述 2.创建 3.操 ...

  6. 初学者python笔记(类的继承与多态---详解)

    文章目录 一.类的组合与继承的区别 二.类的继承 1.继承的功能分析 2.类的继承之派生.接口继承 3.用接口模块abc来实现接口继承 4.使用接口继承的好处 5.类的继承顺序 6.在子类中调用父类的 ...

  7. 【Python】set集合详解

    set集合详解 概述 创建 set集合(2种) 1) 使用 {} 创建 2) set()函数创建集合 访问set集合元素 删除set集合 set集合中添加元素 set集合中删除元素 set集合做交集. ...

  8. Python 字典dict详解(超详细)

    文章目录 Python内置函数/方法详解-字典dict 1.创建字典 1.1 字典键的特性 2.访问字典值 2.1 直接访问 2.2 for循环遍历 2.3 检查键是否存在 2.4 嵌套字典 3.内置 ...

  9. Python学习第七课-元组字典集合

    Python学习第七课-元组&字典&集合 一.元组 1.1元组简介 1.2元组的拆包 1.3字符串拆包 1.4列表的拆包 1.5拆包练习 二.字典的简介 2.1介绍 2.2操作 三.字 ...

  10. Python 3.7.1 中 namedtuple 具名元组基本用法详解

    Python 3.7.1 中 namedtuple 具名元组基本用法详解 转载请注明出处:https://blog.csdn.net/jpch89/article/details/84645251 文 ...

最新文章

  1. 升级SharePoint场的时候, 运行Configuration Wizard需要有什么顺序么?
  2. 工作中用不到的技术要不要学?
  3. 也跟90后小朋友聊聊
  4. swoole 异步MYSQL
  5. 设计模式的Java 8 Lambda表达式–命令设计模式
  6. android 获取url中的参数,验证邮箱格式,截取字符串中键值对的值,String的字节长度,去空格,替换字符
  7. nyoj 586 疯牛(二分+贪心)
  8. 弄懂goroutine调度原理
  9. sdut 图的深度遍历
  10. iOS使用新浪微博、微信官方SDK分享内容
  11. Datatables + Bootstrap
  12. 快速幂(一个简单快速适合整数幂次的运算)
  13. ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
  14. 开课吧:一文解析Nexus是什么
  15. 初中数学503个必考知识点_高考数学必考知识点高中数学重点知识归纳
  16. Jay Kreps: 为什么write有时候在Linux里面耗时很久
  17. 编解码学习笔记(三):Mpeg系列——Mpeg 1和Mpeg 2
  18. iOS 9的App Thinning方案如何节省存储空间
  19. 软考--后缀式(逆波兰式)的两种求法
  20. java后端开发工程师笔试_后端开发工程师面试参考

热门文章

  1. Ant Design Pro在使用TreeSelect树选择组件时,报错未注册
  2. java 微信二次分享_微信二次分享
  3. mysql 组内排名_【原】MySQL分组排序(包含组内排名、求中位数)
  4. php 迭代和递归,实战PHP数据结构基础之递归
  5. 开发接口文档_产品经理必懂的接口文档撰写方式
  6. linux命令行安装tomcat8,CentOS环境下安装JDK、Tomcat及相关Linux命令
  7. 虚拟机如何配置网络ip地址_木杉入门Elasticsearch(2):虚拟机IP地址配置
  8. vue、cnpm不是内部文件_UBoot链接文件 搞懂程序内部长什么样
  9. 同步助手iphone4_88 元淘来的 iPhone 4 降级到 iOS 6,甚至还能跑 “大型游戏”
  10. nginx.conf配置文件简单说明