使用dict和set
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。--廖雪峰老师
举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list:
names = ['xiaoai','海蓝','panden']
scores = [94,97,95]
[root@VM_0_6_centos py]# python3
Python 3.6.1 (default, Dec 27 2017, 09:10:39)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> d = {'xiaoai':95,'zhang':99,'zhou':88}
>>> d['xiaoai']
95
>>> d['xiaoai'] = 99 #多次对一个key放入value,后面的值会把前面的值冲掉
>>> d['xiaoai']
99
>>> d['jiang'] = 99 #添加key与values
>>> d['jiang']
99
>>> 'xiaoai' in d
True
>>> 'jiang' in d #判断key是否存在
True
>>> 'li' in d #key不存在
False
>>> d['xiaoai']
99
>>> d['jiang']
99
>>> d.get('xiaoai') #d.get()判断
99
>>> d.get('linux') #交互环境不显示结果,None
>>> d.get('linux',-20) #可自定义报错的value
-20
>>> d.get('xiaoai',-20)
99
>>> d.pop('jiang')
99
>>> d
{'xiaoai': 99, 'zhang': 99, 'zhou': 88}
>>> d.pop('xiaoai') #pop(key)删除key
99
>>> d
{'zhang': 99, 'zhou': 88}
>>> d['lise'] = 87
>>> d['lise'] = 92 #添加key
>>> d
{'zhang': 99, 'zhou': 88, 'lise': 92}
>>> key = [1,2,3] #不可变key演示。
>>> d[key] = 'a list'
Traceback (most recent call last):
File "", line 1, in
TypeError: unhashable type: 'list'
>>>
[root@VM_0_6_centos py]# python3
Python 3.6.1 (default, Dec 27 2017, 09:10:39)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> key=[1,2,3]
>>> d[key]='a list'
Traceback (most recent call last):
File "", line 1, in
NameError: name 'd' is not defined
>>> s = set([1,2,3])
>>> s
>>> s = set([1,2,3,7,3,4,99,32,32,32,2,22])#在set中,没有重复的key。
>>> s
>>> s.add(34) #添加元素到set
>>> s
>>> s.add(33)
>>> s
>>> s.add(2)
>>> s.add(2)
>>> s.add(2)
>>> s.add(2)
>>> s.add(2)#重复添加元素无效
>>> s
>>> d.remove(2)
Traceback (most recent call last):
File "", line 1, in
NameError: name 'd' is not defined
>>> s.remove(2) #从set中删除元素
>>> s
>>> s1 =set([1,2,3])
>>> s2 = set([2,3,4,5])
>>> s1 & s2 #交集
>>> s1 s2 #并集
>>> a = ['xiaoai','jiang','li']
>>> a.sort()
>>> a
['jiang', 'li', 'xiaoai']
>>> a = ['xiaoai','jiang','li']
>>> a.sort() #排序吗
>>> a
['jiang', 'li', 'xiaoai']
>>> a = ['a','b','c']
>>> a.sort()
>>> a
['a', 'b', 'c']
>>> a = ['c','b','a']
>>> a.sort
>>> a.sort()
>>> a
['a', 'b', 'c']
>>>
下面这个replace()没弄懂,暂时先放放
而对于不可变对象,比如str,对str进行操作呢:
>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'
虽然字符串有个replace()方法,也确实变出了'Abc',但变量a最后仍是'abc',应该怎么理解呢?
我们先把代码改成下面这样:
>>> a = 'abc'
>>> b = a.replace('a', 'A')
>>> b
'Abc'
>>> a
'abc'
要始终牢记的是,a是变量,而'abc'才是字符串对象!有些时候,我们经常说,对象a的内容是'abc',但其实是指,a本身是一个变量,它指向的对象的内容才是'abc':
┌───┐ ┌───────┐
│ a │─────────────────>│ 'abc' │
└───┘ └───────┘
当我们调用a.replace('a', 'A')时,实际上调用方法replace是作用在字符串对象'abc'上的,而这个方法虽然名字叫replace,但却没有改变字符串'abc'的内容。相反,replace方法创建了一个新字符串'Abc'并返回,如果我们用变量b指向该新字符串,就容易理解了,变量a仍指向原有的字符串'abc',但变量b却指向新字符串'Abc'了:
┌───┐ ┌───────┐
│ a │─────────────────>│ 'abc' │
└───┘ └───────┘
┌───┐ ┌───────┐
│ b │─────────────────>│ 'Abc' │
└───┘ └───────┘
所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。
- 如何删除WordPress 的“多站点”模式(multisite)?
- 部分Sonos及Bose扬声器爆安全漏洞,被黑客入侵后发出特定音频
- TCP - WAIT状态及其对繁忙的服务器的影响
- 在Windows 7/Server 2008 R2上部署asp.net 1.1程序
- CSS Auto Reload:解放F5 键,自动刷新浏览器的前端利器(Chrome 扩展)
- zepto 基础知识(3)
- 1.[Andriod]之Andriod布局 VS WinPhone布局
- WordPress自定义url 中的“author” 别名
- ASP.NET 4 AppFabric 输出缓存提供程序
- WordPress 中禁止编辑“已发布”的文章
- Windows Server 2008 R2 网络负载平衡 (NLB)资料汇总
- 0.[Andriod]之从零安装配置Android Studio并编写第一个Android App
- WordPress 后台编辑文章页面添加自定义提示文字
- 使用json 和jQuery制作级联dropdownlist
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL information_schema详解 PARAMETERS
- Python 数据分析(四):Pandas 进阶
- 用 Python 写一个颜值测试小工具
- 当 Python 遇到微信
- CenterNet之loss计算代码解析
- 爬取林丹和赵雅淇的微博评论,看看网友都说了些什么
- 静默安装单机Oracle数据库软件
- 如何用 Python 生成炫酷二维码
- 一个在交流群里讨论过两轮的问题,答案竟然跟一个 PEP 有关
- Python 函数为什么会默认返回 None?
- 潘粤明的《龙岭迷窟》到底怎么样?我用 Python 得出了一些结论!
- [译]按照EIP-712规范签名完成委托和投票
- 更好Solidity合约调试工具: console.log
- 发现了合自己胃口的公众号,但文章太多翻来翻去真麻烦,还好我学了 Python
- 用 Python 下载抖音无水印视频