引言:
一直都听说Python很强大,以前只是浏览了一些博客,发现有点像数学建模时使用的Matlab,就没有深入去了解了。如今Python使用的地方越来越多,最近又在学习机器学习方面的知识,因此想系统的学一学,让心里踏实一点。以下是本人在看《Python基础教程第二版》时,使用自己的思维方式进行的总结,自言自语,把知识串起来,想再使用Python时就少翻点资料。
1. 心中有数
学习一门语言之前我都想知道它到底能干什么,如果它干的事情和我现在已经会的语言相通,可能我就比较着学习,浏览一下语法。先看看百度百科对Python的解释。
Python(英语发音:/ˈpaɪθən/), 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C++重写。
可以看出,首先它是一种解释型的脚本语言,因此和Shell之类的很像。其次,它有强大的类库。“类库”,我只对Java熟悉,一听到类库联想到面向对象,类库的另一种理解就是我们可以省去很多的编码工作,使用成熟的类库去解决以前写C或者汇编时一步步实现的一些功能。再次,它的昵称是“胶水语言”。“胶水语言”这个很厉害,让我联想到在JSP文件里面写Java的场景,或者Java调用Native库时的场景,可能比喻得不是很准确,应该和Shell脚本语言比较要贴切点。因此它的“包容”能力巨强,心胸宽广。最后,使用Python快速生成程序的原型。哇,这岂不是验证算法的最好方式。最早我只会C语言,写算法程序的时候还是挺费劲的,从语法上就要考虑怎么能实现这个算法。不知道Python到底能给我带来怎样的便利。
2. 第一章——基础知识
2.1. 下载安装
阅读的这本书是使用的是Python2.5,到Python官网http://www.python.org的Downloads下的All Releases下找一找下一个。
2.2. 数字和表达式
- 对于x = 1/2,在C语言里面会得到0,要想得到0.5,需要有浮点数参与运算,即x = 1.0/2。然后Python也是如此,但是如果希望Python没有浮点数参与就能执行普通除法,需要引入库。
>>> from __future__ import division
但此时又想做整除,怎么办?就要用的//(双斜线) x = 1//2。即使有浮点数参与运算,即x = 1.0 // 2.0,得到的也是0.0;
- 幂运算: x = 2**3,结果是8。幂运算比取反优先级高,所以x = -3**2,结果是-9,x = (-3)**2结果才是9。或者x = pow(-3,2);
- 十六进制:0xAF,和C语言一样,前面是0x;
- 八进制:010,和C语言一样,前面是0;
- 四舍五入最接近的整数:round();
- 向下取整:math.floor(32.9),结果是32.0;
- 复数运算:cmath.sqrt(-1),结果1j;
Operation | Result |
---|---|
x | y | bitwise or of x and y |
x ^ y | bitwise exclusive or of x and y |
x & y | bitwise and of x and y |
x << n | x shifted left by n bits |
x >> n | x shifted right by n bits |
~x | the bits of x inverted |
该运算和C语言类似。
2.3. 字符串
- str()、repr()和反引号(键盘Esc下面带~那个键)是将Python值转换为字符串的3种方式。函数str()让字符串更容易阅读,而repr()和反引号则把结果字符串转换成合法的Python表达式。
- input()会假设用户输入的是合法Python表达式,raw_input()会把输入当做原始数据。应该尽可能的使用raw_input();
- 长字符串,且可以换行,可以写在三个引号里面"""Hello Python """;
- 可以用反斜线(\)换行输入,表示下一行还是一起的;
- 不加转义,保留原始字符串:print r'c:\Program Files\Python2.5'。即前面加个r;
- Unicode字符串前加u:u'Hello Python!'
3. 第二章——列表和元组
3.1. 概览
书上说Python包含6种内建序列,常用的是两种类型:列表和元组。但到底是哪6种呢?搜遍了网上的博客,都是前面提到的那句话。最后到官网Document找到了。
Sequence Types — str(字符串), unicode, list(列表), tuple(元组), buffer, xrange
序列,是指有序集合排列。所有序列都具有索引(-1是最后一个元素)、分片、加、乘、成员资格、长度、最大和最小的内在函数。列表可以修改,元组则不能。一般情况下,列表都可以替代元组。序列和映射(如字典)是两类主要的容器(container),还有集合(set)也属于容器。
str,unicode: 这两种字符串前面提到过了;
list: 列表。如edward = ['Panderen', 12];
tuple: 元组。
buffer: buffer对象,如string, array 和 buffer。使用方式buffer(object[,offset[,size]]);
xrange: 和range()作用相同,但是xrange返回一个xrange对象。range返回一个list对象。官网文档解释是This is an opaque sequence type which yields the same values as the corresponding list, without actually storing them all simultaneously. 也就是说xrange不会把数据同时存起来。相反range会把数据存起来。那range就会开辟很大的空间,特别是数据量很大的时候。因此用xrange也许性能会高点哟。
下面这个链接把一些常用的类型总结了一下。http://wuyuans.com/2013/04/python-data-type/
类型分类 | 类型名称 | 描述 |
---|---|---|
None | Type(None) | null对象None |
数字类型 | int | 整数 |
long | 长整数,任意精度(python2) | |
float | 浮点数 | |
complex | 复数 | |
bool | 布尔值(True或False) | |
序列类型 | str | 字符串 |
unicode | Unicode字符串(python2) | |
list | 列表 | |
tuple | 元组 | |
xrange | xrang()创建的整数范围 | |
映射类型 | dic | 字典 |
集合类型 | set | 可变集合 |
frozenset | 不可变集合 |
以上都是包括序列在内的常用类型。
3.2. 基本运算
Operation | Result |
---|---|
x in s | True if an item of s is equal to x, else False |
x not in s | False if an item of s is equal to x, else True |
s + t | the concatenation of s and t |
s * n, n * s | n shallow copies of s concatenated |
s[i] | i‘th item of s, origin 0 |
s[i:j] | slice of s from i to j |
s[i:j:k] | slice of s from i to j with step k |
len(s) | length of s |
min(s) | smallest item of s |
max(s) | largest item of s |
以上是序列的基本通用运算。
Operation | Result |
---|---|
s[i] = x | item i of s is replaced by x |
s[i:j] = t | slice of s from i to j is replaced by the contents of the iterable t |
del s[i:j] | same as s[i:j] = [] |
s[i:j:k] = t | the elements of s[i:j:k] are replaced by those of t |
del s[i:j:k] | removes the elements of s[i:j:k] from the list |
s.append(x) | same as s[len(s):len(s)] = [x] |
s.extend(x) | same as s[len(s):len(s)] = x |
s.count(x) | return number of i‘s for which s[i] == x |
s.index(x[, i[, j]]) | return smallest k such that s[k] == x and i <= k < j |
s.insert(i, x) | same as s[i:i] = [x] |
s.pop([i]) | same as x = s[i]; del s[i]; return x |
s.remove(x) | same as del s[s.index(x)] |
s.reverse() |
reverses the items of s in place >>> x = [1, 2, 3] |
s.sort([cmp[, key[, reverse]]]) |
sort the items of s in place x.sort(cmp) x.sort(key=len),根据长度排序 x.sort(reverse=True),反向排序 |
以上是序列的常用操作
3.3. 分片
开始点包括在返回结果中,结束点不在分片内。
- number[-3:] —— 从倒数第三个数开始访问到结尾;
- number[:] —— 返回所有,可用于复制序列;
- number[0:10:1]—— 步长为1;
- number[::4] —— 每4个元素的第一个;
- number[8:3:-1] —— 步长为1,从右至左地提取数据;
3.4. 乘法
- 'python'*5,结果是'pythonpythonpythonpythonpython'。相当于复制。
- None是Python的内建值,表示啥都没有。但却站要站位置。嗯。。。就是站着茅坑不XX。
3.5. 列表
- name = list('hello'),结果是['H','e','l','l','o'];
- ' '.join(name),结果是"Hello";
- number[1] = 2,name[2:] = list('ar'),修改值;
- number[1:1] = [2,3,4],在number[1]前插入2,3,4;
- number[1:4] = [],代换的方式删除元素,结果和del number[1:4]一样。
- number.append(object),append是将参数作为对象增加,如
>>> number = [1,2,3];
>>> number
[1, 2, 3]
>>> number.append([4,5])
>>> number
6 [1, 2, 3, [4, 5]]
>>> number.extend([6,7])
>>> number
9 [1, 2, 3, [4, 5], 6, 7]
3.6. 元组
定义一个包含一个值得元组,x = (42,)。因此会有
>>> 3*(40+2)
126
>>> 3*(40+2,)
(42, 42, 42)
>>> x = 1, 2, 3
>>> x
(1, 2 ,3)
4. 第三章——使用字符串
4.1. 格式化输出
>>> print "Pi is: %.3f" % 3.141592653589793238462643383279
Pi is: 3.142
4.2. 字符串格式化转换类型
Flag | Meaning |
---|---|
'#' |
The value conversion will use the “alternate form” (where defined below). >>> print "Pi is: %#20.3f" % 3.141592653589793238462643383279 |
'0' |
The conversion will be zero padded for numeric values. 用0填充 >>> print "Pi is: %020.3f" % 3.141592653589793238462643383279 |
'-' |
The converted value is left adjusted (overrides the '0' conversion if both are given). 左对齐 >>> print "Pi is: %-20.3f" % 3.141592653589793238462643383279 |
' ' |
(a space) A blank should be left before a positive number (or empty string) produced by a signed conversion. 整数左对齐 >>> print "Pi is: % 20.3f" % -3.141592653589793238462643383279 |
'+' |
A sign character ('+' or '-') will precede the conversion (overrides a “space” flag). >>> print "Pi is: %+20.3f" % 3.141592653589793238462643383279 |
Conversion | Meaning |
---|---|
'd' | Signed integer decimal. |
'i' | Signed integer decimal. |
'o' | Signed octal value. |
'u' | Obsolete type – it is identical to 'd'. |
'x' | Signed hexadecimal (lowercase). |
'X' | Signed hexadecimal (uppercase). |
'e' | Floating point exponential format (lowercase). |
'E' | Floating point exponential format (uppercase). |
'f' | Floating point decimal format. |
'F' | Floating point decimal format. |
'g' | Floating point format. Uses lowercase exponential format if exponent is less than -4 or not less than precision, decimal format otherwise. |
'G' | Floating point format. Uses uppercase exponential format if exponent is less than -4 or not less than precision, decimal format otherwise. |
'c' | Single character (accepts integer or single character string). |
'r' | String (converts any Python object using repr()). |
's' | String (converts any Python object using str()). |
'%' | No argument is converted, results in a '%' character in the result. |
先写到这里,看看书再继续写字典,条件语句,类,异常。。。
Python基础教程总结(一)的更多相关文章
-
改写《python基础教程》中的一个例子
一.前言 初学python,看<python基础教程>,第20章实现了将文本转化成html的功能.由于本人之前有DIY一个markdown转html的算法,所以对这个例子有兴趣.可仔细一看 ...
-
.Net程序员之Python基础教程学习----列表和元组 [First Day]
一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...
-
python基础教程笔记—即时标记(详解)
最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...
-
python基础教程(一)
之所以选择py交易有以下几点:1.python是胶水语言(跨平台),2.python无所不能(除了底层),3.python编写方便(notepad++等文本编辑器就能搞事情),4.渗透方面很多脚本都是 ...
-
Python基础教程2上的一处打印缺陷导致的代码不完整#1
#1对代码的完善的 出现打印代码处缺陷截图: 图片上可以看到,定义的request根本没有定义它就有了.这个是未定义的,会报错的,这本书印刷问题,这个就是个坑,我也是才发现.花了点时间脱坑. 现在发完 ...
-
python基础教程(第二版)
开始学习python,根据Python基础教程,把里面相关的基础章节写成对应的.py文件 下面是github上的链接 python基础第1章基础 python基础第2章序列和元组 python基础第3 ...
-
python基础教程1:入门基础知识
写在系列前,一点感悟 没有梳理总结的知识毫无价值,只有系统地认真梳理了才能形成自己的知识框架,否则总是陷入断片儿似的学习-遗忘循环中. 学习方法真的比刻苦"傻学"重要多了,而最重要 ...
-
Python基础教程-第3版(文字版) 超清文字-非扫描版 [免积分、免登录]
此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Python基础教程-第3版 备用下载:Python基础教程-第3版
-
Python基础教程学习笔记:第一章 基础知识
Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入“p ...
-
【Python】Python基础教程系列目录
Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 在现在的工作及开发当中,Python的使用越来越广泛,为了方便大家的学习,Linux大学 特推出了 <Python基 ...
随机推荐
-
字符串strcpy
strcpy函数的表达方式: //把一个char组成的字符串循环右移n个,如:“abcdefghi",n=2,移动后"hiabcdefgh" #include <i ...
-
Code First 迁移
https://msdn.microsoft.com/zh-cn/data/jj591621 Data Access and Storage > 学习 > Entity Framework ...
-
EF调用函数日期查询
q = q.Where(t => System.Data.Entity.SqlServer.SqlFunctions.DateDiff("dd", t.Date, dDate ...
-
HDU 1029 Ignatius and the Princess IV DP
kuangbin 专题 这题,有很多种解法. 第一种: 直接比较每个数出现次数. #include<iostream> #include<string> #include< ...
-
Android实例-处理隐藏输入法后不再显示问题(XE8+小米2)
结果: 1.可以处理再次显示问题,但缺点是每个控件都要处理一次,累.哪位大神有好的处理方法,请M我. 实例代码: unit Unit1; interface uses System.SysUtils, ...
-
Selenium索引
Common Selenium各种工具比较 Selenium firefox 版本问题 Selenium IDE Selenium IDE整理 WebDriver Java 版本 Selenium开始 ...
-
c++,纯虚函数与抽象类
1.纯虚函数的定义: (1)虚函数被“初始化”为0的函数.声明纯虚函数的一般形式是virtual 函数类型 函数名(参数表列) =0;(2)纯虚函数没有函数体:(3)最后面的“=0”并不表示函数返回值 ...
-
网口up不起来问题排查
最近处理一个问题,发现有的网口up不起来. ethtool eth6 Settings for eth6: Supported ports: [ FIBRE ] Support ...
-
Android _立体车库界面
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android=&q ...
-
winform最小化后重复进load事件原因
最近编写一个工具发现的问题,窗体不论是最小化还是进入托盘,重新打开的时候都会进入控件load事件. 产生这个现象的条件是: 1.使用了用户控件,在控件中使用了load事件 2.在主窗体中,隐藏或显示任 ...