频道栏目
首页 > 资讯 > Python > 正文

python核心编程学习笔记

16-10-09        来源:[db:作者]  
收藏   我要投稿

@python起步
#程序输出,print语句以及“hello world”
$在交互式解释器中,可以使用print输出变量值,也可以仅使用变量名查看变量值,一下是关于字符串‘hello world’的一个例子:
这里写图片描述
??发现两者在输出字符串的时候存在差异,后者有单引号,这是为了让非字符串对象也能以字符串的方式显示在屏幕上--即它显示的是该对象的字符串表示,而不仅仅是字符串本身。引号表示你刚刚输入的变量的值是一个字符串。
*下划线(_)在解释器中有特别的含义, 表示最后一个表达式的值。
$输出重定向>>
下面这个例子将输出重定向到标准错误输
出:
这里写图片描述
下面这个例子将输出重定向到日志文件:
这里写图片描述

#程序输入和 内建函数raw_input()
$以下是输入的例子:
这里写图片描述
输入字符串数字,并强转为整形:
这里写图片描述

#运算符
$算术运算符:+,-,,,/,//,%,*(按优先级排列)
//:对除法结果进行四舍五入
**:乘方
比较运算符:< <= > >= == !=
逻辑运算符:and or not

#数字
int (有符号整数)
long (长整数)
bool (布尔值)
float (浮点值)
complex (复数)

#字符串
可以用索引[]或者切片[:]来获取子字符串:
这里写图片描述

#列表和元组
列表:[ ]元素可以被修改
元组:( )元素不可以被修改
这里写图片描述

#字典
??

#if语句
$语法
if expression1:
if_suite
elif expression2:
elif_suite
else:
else_suite

#while循环
$语法:
while expression:
while_suite

#for迭代
这里写图片描述

$通过range达到计数循环:
这里写图片描述
$通过range和len达到对字符串的遍历:
这里写图片描述

#列表解析
将for循环放到列表中:
这里写图片描述
并进行元素挑选:
这里写图片描述

#文件和内建函数 open() 、file()
filename = raw_input(‘Enter file name: ‘)
fobj = open(filename, ‘r’)
for eachLine in fobj:
print eachLine,
fobj.close()

#错误和异常
try-except语句

#函数
def function_name([arguments]):
“optional documentation string”
function_suite
默认参数:
这里写图片描述

#类
class ClassName(base_class[es]):
“optional documentation string”
static_member_declarations
method_declarations

$类的实例:
这里写图片描述

#实用的函数
函数 描述
dir([obj]) 显示对象的属性,如果没有提供参数, 则显示全局变量的名字
help([obj]) 以一种整齐美观的形式 显示对象的文档字符串, 如果没有提供任何参
数, 则会进入交互式帮助。
int(obj) 将一个对象转换为整数
len(obj) 返回对象的长度
open(fn, mode) 以 mode(‘r’ = 读, ‘w’= 写)方式打开一个文件名为 fn 的文件
range([[start,]stop[,step]) 返回一个整数列表。起始值为 start, 结束值为 stop - 1; start
默认值为 0, step默认值为1。
raw_input(str) 等待用户输入一个字符串, 可以提供一个可选的参数 str 用作提示信
息。
str(obj) 将一个对象转换为字符串
type(obj) 返回对象的类型(返回值本身是一个 type 对象!)

#本章练习
$while()输出0—-10
这里写图片描述
$for()输出0——10
这里写图片描述
$判断输入数值是正数还是负数,或是零,输出结果:
这里写图片描述
显示字符串:
这里写图片描述

这里写图片描述

这里写图片描述

求列表平均数:

带文本菜单的程序 写一个带文本菜单的程序,菜单项如下(1)取五个数的和 (2) 取五个
数的平均值….(X)退出。由用户做一个选择,然后执行相应的功能。 当用户选择退出时程序
结束:
这里写图片描述

??dir():
这里写图片描述

不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法dir(),该方法将被调用。如果参数不包含dir(),该方法将最大限度地收集参数信息。

排序
list.sort(func=None, key=None, reverse=False)
正序和逆序:
这里写图片描述

sorted()排序
sorted(iterable, cmp=None, key=None, reverse=False)

这里写图片描述

&*list.sort和sorted的区别在于前者不会返回对象,直接修改原列表,后者返回排好序的新对象

#sorted解析
sorted(data, cmp=None, key=None, reverse=False)
其中,data是待排序数据,可以使List或者iterator, cmp和key都是函数,这两个函数作用与data的元素上产生一个结果,sorted方法根据这个结果来排序。
cmp(e1, e2) 是带两个参数的比较函数, 返回值: 负数: e1 < e2, 0: e1 == e2, 正数: e1 > e2. 默认为 None, 即用内建的比较函数.
key 是带一个参数的函数, 用来为每个元素提取比较值. 默认为 None, 即直接比较每个元素.
通常, key 和 reverse 比 cmp 快很多, 因为对每个元素它们只处理一次; 而 cmp 会处理多次.

通过例子来说明sorted的用法:

 


对由tuple组成的List排序
Python代码 收藏代码

 

students = [(‘john’, ‘A’, 15), (‘jane’, ‘B’, 12), (‘dave’, ‘B’, 10),]
用key函数排序(lambda的用法见 注释1)
Python代码 收藏代码
sorted(students, key=lambda student : student[2]) # sort by age
[(‘dave’, ‘B’, 10), (‘jane’, ‘B’, 12), (‘john’, ‘A’, 15)]

用cmp函数排序
Python代码 收藏代码

sorted(students, cmp=lambda x,y : cmp(x[2], y[2])) # sort by age
[(‘dave’, ‘B’, 10), (‘jane’, ‘B’, 12), (‘john’, ‘A’, 15)]

用 operator 函数来加快速度, 上面排序等价于:(itemgetter的用法见 注释2)
Python代码 收藏代码

from operator import itemgetter, attrgetter
sorted(students, key=itemgetter(2))

用 operator 函数进行多级排序
Python代码 收藏代码

sorted(students, key=itemgetter(1,2)) # sort by grade then by age
[(‘john’, ‘A’, 15), (‘dave’, ‘B’, 10), (‘jane’, ‘B’, 12)]

 


对由字典排序
Python代码 收藏代码

 

d = {‘data1’:3, ‘data2’:1, ‘data3’:2, ‘data4’:4}
sorted(d.iteritems(), key=itemgetter(1), reverse=True)
[(‘data4’, 4), (‘data1’, 3), (‘data3’, 2), (‘data2’, 1)]
注释1
参考:http://jasonwu.me/2011/10/29/introduce-to-python-lambda.html

注释2
参考:http://ar.newsmth.net/thread-90745710c90cf1.html
class itemgetter(builtin.object)
| itemgetter(item, …) –> itemgetter object
|
| Return a callable object that fetches the given item(s) from its operand.
| After, f=itemgetter(2), the call f(r) returns r[2].
| After, g=itemgetter(2,5,3), the call g(r) returns (r[2], r[5], r[3])

相当于
Python代码 收藏代码
def itemgetter(i,*a):
def func(obj):
r = obj[i]
if a:
r = (r,) + tuple(obj[i] for i in a)
return r
return func

a = [1,2,3]
b=operator.itemgetter(1)
b(a)
2
b=operator.itemgetter(1,0)
b(a)
(2, 1)
b=itemgetter(1)
b(a)
2
b=itemgetter(1,0)
b(a)
(2, 1)

 

相关TAG标签
上一篇:PHP学习笔记九之正则表达式(进阶篇)
下一篇:计算几何问题汇总--圆与矩形
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站