python学习2
1.input()返回的是字符串, 如果想读入一个数字,应该用int()转化
2.循环的写法与C不同的地方就是,for while等写完之后在那一行后面要加上一个冒号,这是比较特殊的地方。
还有就是range(5)可以得到0,1,2,3,4 比如执行liat(range(5))得到 [0,1,2,3,4]
3.names = ['hello','woeld','haha']
for name in names:
print(name)
最后得到:
hehe
haha
yeye
4.dict
4.1python中的这个dict也是个神奇的东西,作用和C里面讲的哈希算法一样一样的,其实算法并没有语言之分,只不过是算法有不同的语言的表示罢了。而这个dict数据结构,就是恰恰反映哈希算法的东西。
前面我们知道,python中定义list用了[],而定义不可变对象tuple用了(),剩下一个没用那就是{}了,这么说好像有点牵强,但是比较好记嘛,暂时就这么解释了。
eg:1.d = {'haha':20,'heihei':30,'hehe':40} 定义完之后,我输入了d['haha']得到了20。注意这里面我用的是[],d['haha'],这样就实现了dict结构的d的访问。
2.当然如果是d['hihi']这种kay不存在的语句,python会报错。
3.也可以用 'hehe' in d 来验证'hehe'是否在d中;
4.另一种验证的方法是d.get('hehe')来试,如果d中有'hehe'对应的值,就会输出,否则什么也不会出现。
5.也可以写成d.get('hehe',-5)执行结果是如果d中有'hehe'元素,那么就输出响应的值,如果没有那就输出-5,这样就直接可以得知d中没有这个元素了。
6.关于dict还有其他的一些操作,比如: d.pop('haha') 这样就把'haha'对应的20连通'haha'一块都删掉了。
4.2关于的dict的哈希特性需要特别的说明一下:其实要用list或者tuple存储一个数组的时候,查找某个元素的时候就像从一本字典的第一页翻起去找中间某个字,很有可能就是事件上超级费时;而dict用的是哈希的方法,就是首先通过'haha','heihei'这些字符串计算一个key值,然后将20,30 分别对应存放在相应的key值的地方。等到再次输入'haha'的时候重复计算key的过程,就得到了'haha'的key值,直接到相应地点取出即可。这样直接的方法相当的给力。 相比于list和tuple在查询时间上就是一个质的飞越,但是通过刚才的描述的计算存储过程想必也可以知道dict占用的空间将会很大,这就是所谓的用“空间换时间”吧。
eg:由于dict的这个特性,所以计算的时候就有了不能出现 d = {'haha':20,'haha':30,'hehe':40}的情况,这样的话20会被自动抹去。另外dict中元素的排序是按其key值来排序的,跟输入顺序并没有什么关系。
5.set实现方法
set与dict最大的不同就是set不存储值,他放入内存的方式和dict一样,都是通过哈希算法来计算一个key值。最后实现的结果就是一个数学意义上的无序的、不重复的集合。我们可以按照数学的方式那样子进行&操作、|操作,最终得到的就是数学意义的计算结果。
6.不可变对象
6.1str是不可变对象、list是可变对象
6.2对于可变对象list内部的东西是可以变化的,比如:
可以看到a在排序前后内容发生了改变,换一个层面来看这段代码,告诉我们list中的元素有时候是可以用a.sort()排序的哎!
6.3对于不可变对象:
对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。
相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的
python学习2的更多相关文章
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
- Python 学习小结
python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...
- Python学习路径及练手项目合集
Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159
- python学习笔记-python程序运行
小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...
- Python学习记录day6
title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...
- Python学习记录day5
title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...
- [Python] 学习资料汇总
Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大且完善的通用型语言,已经有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用 ...
- Python学习之路【目录】
本系列博文包含 Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习编程的童鞋提供一点帮助!!! 目录: Python学习[第一篇]python简介 Python学习[第二篇]p ...
- python学习笔记系列----(八)python常用的标准库
终于学到了python手册的最后一部分:常用标准库.这部分内容主要就是介绍了一些基础的常用的基础库,可以大概了解下,在以后真正使用的时候也能想起来再拿出来用. 8.1 操作系统接口模块:OS OS模块 ...
随机推荐
- Android浮层点击穿透问题
最近做微信公众号开发的时候遇到一个问题,上线后发现此问题后检查代码没有发现问题,无奈只能回滚到上一个版本. 问题是这样的:页面一个选择的浮层,在浮层点击确定后,下面的页面会自动提交 在测试环境上无法重 ...
- 剖析AngularJS作用域
一.概要 在AngularJS中,子作用域(child scope)基本上都要继承自父作用域(parent scope). 但,事无绝对,也有特例,那就是指令中scope设置项为对象时,即scope: ...
- 从零开始编写自己的C#框架(23)——上传组件使用说明
文章导航 1.前言 2.上传组件功能说明 3.数据库结构 4.上传配置管理 5.上传组件所使用到的类 6.上传组件调用方法 7.效果演示 8.小结 1.前言 本系列所使用的是上传组件是大神July开发 ...
- 通过一个实例理解 offsetLeft,offsetTop; offsetWidth , offsetHeight
obj.offsetTop 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算上侧位置,整型 obj.offsetLeft 指 obj 相对于版面或由 offsetParen ...
- 读书笔记--SQL必知必会11--使用子查询
11.1 子查询 查询(query),任何SQL语句都是查询.但此术语一般指SELECT语句. SQL还允许创建子查询(subquery),即嵌套在其他查询中的查询. 作为子查询的SELECT语句只能 ...
- 解决Jquery Kendo.xxx is not a function 的方法
不知道大家遇到过没有,要同时间使用Telerick 和Kendo的时候 这个问题搞了我好多天,其实解决方法很简单,就是在LAYOUT里面先写TELERIK的注册脚本, 再写KENDO的. @(Html ...
- How to implement equals() and hashCode() methods in Java[reproduced]
Part I:equals() (javadoc) must define an equivalence relation (it must be reflexive, symmetric, and ...
- base的应用
------------父类 public class Person { public Person(string name,int age) { this.Na ...
- 在DevExpress中使用CameraControl控件进行摄像头图像采集
在我们以前的项目了,做摄像头的图片采集,我们一般还是需要做一个封装处理的,在较新版本的DevExpress控件里面,增加了一个CameraControl控件,可以直接调用摄像头显示的,因此也可以做头像 ...
- sql 修改字段默认值
1.查出该字段的约束名称 SELECT c.name FROM sysconstraints a INNER JOIN syscolumns b on a.colid=b.colid INNER JO ...