Python之路【第二篇】:Python基础(一)
一、作用域
对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用。
1
2
3
|
if 1 = = 1 : name = 'wupeiqi' print name |
下面的结论对吗?
外层变量,可以被内层变量使用内层变量,无法被外层变量使用
二、三元运算
1
|
result = 值 1 if 条件 else 值 2 |
如果条件为真:result = 值1
如果条件为假:result = 值2
三、进制
- 二进制,01
- 八进制,01234567
- 十进制,0123456789
- 十六进制,0123456789ABCDEF
Python基础
对于Python,一切事物都是对象,对象基于类创建
所以,以下这些值都是对象: "wupeiqi"、38、['北京', '上海', '深圳'],并且是根据不同的类生成的对象。
一、整数
如: 18、73、84
每一个整数都具备如下功能:
int
二、长整型
可能如:2147483649、9223372036854775807
每个长整型都具备如下功能:
long
三、浮点型
如:3.14、2.88
每个浮点型都具备如下功能:
float
四、字符串
如:'wupeiqi'、'alex'
每个字符串都具备如下功能:
str
注:编码;字符串的乘法;字符串和格式化
五、列表
如:[11,22,33]、['wupeiqi', 'alex']
每个列表都具备如下功能:
list
注:排序;
六、元组
如:(11,22,33)、('wupeiqi', 'alex')
每个元组都具备如下功能:
tuple
七、字典
如:{'name': 'wupeiqi', 'age': 18} 、{'host': '2.2.2.2', 'port': 80]}
ps:循环时,默认循环key
每个字典都具备如下功能:
dict
1
2
3
|
练习:元素分类 有如下值集合 [ 11 , 22 , 33 , 44 , 55 , 66 , 77 , 88 , 99 , 90. ..],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。 即: { 'k1' : 大于 66 , 'k2' : 小于 66 } |
八、set集合
set是一个无序且不重复的元素集合
set
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
练习:寻找差异 # 数据库中原有 old_dict = { "#1" :{ 'hostname' :c1, 'cpu_count' : 2 , 'mem_capicity' : 80 }, "#2" :{ 'hostname' :c1, 'cpu_count' : 2 , 'mem_capicity' : 80 } "#3" :{ 'hostname' :c1, 'cpu_count' : 2 , 'mem_capicity' : 80 } } # cmdb 新汇报的数据 new_dict = { "#1" :{ 'hostname' :c1, 'cpu_count' : 2 , 'mem_capicity' : 800 }, "#3" :{ 'hostname' :c1, 'cpu_count' : 2 , 'mem_capicity' : 80 } "#4" :{ 'hostname' :c2, 'cpu_count' : 2 , 'mem_capicity' : 80 } } 需要删除:? 需要新建:? 需要更新:? 注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新 |
demo
九、collection系列
1、计数器(counter)
Counter是对字典类型的补充,用于追踪值的出现次数。
ps:具备字典的所有功能 + 自己的功能
123c
=
Counter(
'abcdeabcdabcaba'
)
c
输出:Counter({
'a'
:
5
,
'b'
:
4
,
'c'
:
3
,
'd'
:
2
,
'e'
:
1
})
Counter2、有序字典(orderedDict )
orderdDict是对字典类型的补充,他记住了字典元素添加的顺序
OrderedDict3、默认字典(defaultdict)
学前需求:
12有如下值集合 [
11
,
22
,
33
,
44
,
55
,
66
,
77
,
88
,
99
,
90.
..],将所有大于
66
的值保存至字典的第一个key中,将小于
66
的值保存至第二个key的值中。
即: {
'k1'
: 大于
66
,
'k2'
: 小于
66
}
原生字典解决方法defaultdict字典解决方法defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。
defaultdict4、可命名元组(namedtuple)
根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型。
123import
collections
Mytuple
=
collections.namedtuple(
'Mytuple'
,[
'x'
,
'y'
,
'z'
])
Mytuple
5、双向队列(deque)
一个线程安全的双向队列
deque注:既然有双向队列,也有单项队列(先进先出 FIFO )
Queue.Queue
迭代器和生成器
一、迭代器
对于Python 列表的 for 循环,他的内部原理:查看下一个元素是否存在,如果存在,则取出,如果不存在,则报异常 StopIteration。(python内部对异常已处理)
listiterator
二、生成器
range不是生成器 和 xrange 是生成器
readlines不是生成器 和 xreadlines 是生成器
1
2
3
4
|
>>> print range ( 10 ) [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] >>> print xrange ( 10 ) xrange ( 10 ) |
生成器内部基于yield创建,即:对于生成器只有使用时才创建,从而不避免内存浪费
1
2
3
4
5
6
7
8
9
10
11
|
练习:<br>有如下列表: [ 13 , 22 , 6 , 99 , 11 ] 请按照一下规则计算: 13 和 22 比较,将大的值放在右侧,即:[ 13 , 22 , 6 , 99 , 11 ] 22 和 6 比较,将大的值放在右侧,即:[ 13 , 6 , 22 , 99 , 11 ] 22 和 99 比较,将大的值放在右侧,即:[ 13 , 6 , 22 , 99 , 11 ] 99 和 42 比较,将大的值放在右侧,即:[ 13 , 6 , 22 , 11 , 99 ,] 13 和 6 比较,将大的值放在右侧,即:[ 6 , 13 , 22 , 11 , 99 ,] ... |
Demo
深浅拷贝
为什么要拷贝?
1
|
当进行修改时,想要保留原来的数据和修改后的数据 |
数字字符串 和 集合 在修改时的差异? (深浅拷贝不同的终极原因)
1
2
3
|
在修改数据时: 数字字符串:在内存中新建一份数据 集合:修改内存中的同一份数据 |
对于集合,如何保留其修改前和修改后的数据?
1
|
在内存中拷贝一份 |
对于集合,如何拷贝其n层元素同时拷贝?
1
|
深拷贝 |
作业
开发一个简单的计算器程序
*实现对加减乘除、括号优先级的解析,并实现正确运算
Python之路【第二篇】:Python基础(一)的更多相关文章
- python之路第二篇(基础篇)
入门知识: 一.关于作用域: 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 10 == 10: name = 'allen' print name 以下结论对吗? ...
- Python之路(第二篇):Python基本数据类型字符串(一)
一.基础 1.编码 UTF-8:中文占3个字节 GBK:中文占2个字节 Unicode.UTF-8.GBK三者关系 ascii码是只能表示英文字符,用8个字节表示英文,unicode是统一码,世界通用 ...
- Python之路第二天,基础(2)-基本数据类型
一.Python数据类型 数 在Python中有4种类型的数,整数,长整数,浮点数和复数. 2是一个整数的例子 长整数不过是大一点的整数 3.23和52.3E是浮点数的例子.E标记表示10的幂.52. ...
- Python之路(第九篇)Python文件操作
一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r",encoding = “utf ...
- Python开发【第二篇】:初识Python
Python开发[第二篇]:初识Python Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...
- 第二篇 python进阶
目录 第二篇 python进阶 一 数字类型内置方法 二 字符串类型内置方法 三 列表类型内置方法(list) 四 元组类型内置方法(tuple) 五 字典内置方法 六 集合类型内置方法(self) ...
- [转帖]虚拟内存探究 -- 第二篇:Python 字节
虚拟内存探究 -- 第二篇:Python 字节 http://blog.coderhuo.tech/2017/10/15/Virtual_Memory_python_bytes/ 是真看不懂哦 ...
- 前端第二篇---前端基础之CSS
前端第二篇---前端基础之CSS 目录 一.css介绍 二.css语法 三.css的几种引入方式 四.css选择器 五.css属性相关 六.盒子模型 拓展 一.css介绍 CSS(Cascading ...
- 我的Python成长之路---第二天---Python基础(7)---2016年1月9日(晴)
再说字符串 一.字符串的编码 字符串的编码是个很令人头疼的问题,由于计算机是美国人发明的,他们很理所当然的认为计算机只要能处理127个字母和一些符号就够用了,所以规定了一个字符占用8个比特(bit)也 ...
- 初学Python——文件操作第二篇
前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...
随机推荐
- 如何为PHP贡献代码
PHP在之前把源代码迁移到了git下管理, 同时也在github(https://github.com/php/php-src)上做了镜像, 这样一来, 就方便了更多的开发者为PHP来贡献代码. 今天 ...
- [InnoSetup]Inno Setup软件打包脚本
脚本由 Inno Setup 脚本向导 生成! ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #define MyAppName "SFT期货交易系统&quo ...
- .NET 集合操作性能
如果单元格的内容是na(not applicatable),就表示这个操作不能应用于这种集合类型.
- C Primer Plus(第五版)7
第 7 章 C 控制语句:分支和跳转 在本章中你将学习下列内容: · 关键字:if(如果),else(否则),switch(切换),continue(继续),break(中断), case(情况),d ...
- nyoj 86 找球号(一)
点击打开链接 找球号(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i ...
- iOS中使用FMDB事务批量更新数据库
今天比较闲看到大家在群里讨论关于数据库操作的问题,其中谈到了"事务"这个词,坦白讲虽然作为计算机专业的学生,在上学的时候确实知道存储过程.触发器.事务等等这些名词的概念,但是由于毕 ...
- html 去掉input 获取焦点时的边框
html中,当input标签获取焦点的时候(例如,当光标放在input框中准备输入值时), input标签外围会出现边框,有的时候我们需要去掉这个边框,可以使用css的outline:none;属性将 ...
- NSSet、NSMutableSet基本用法
NSSet.NSMutableSet基本用法 在Foundation框架中,提供了NSSet类,它是一组单值对象的集合,且NSSet实例中元素是无序,同一个对象只能保存一个. 一.不可变集合NSSet ...
- OC基础笔记目录
OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象 ...
- YUV主要采样格式理解
主要的采样格式有YCbCr 4:2:0.YCbCr 4:2:2.YCbCr 4:1:1和 YCbCr 4:4:4.其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也 ...