Python学习笔记 高级主题
1.列表的递归---用于输出列表字符串中的每个元素 >>> def printList(L):
#如果为空,则什么都不做
if not L:
return
#如果是链表,则对第一个元素调用printList函数
if type(L[0])==type([]):
printList(L[0])
else:#如果不是链表,仅输出元素即可
print L[0]
#处理L的其他部分
printList(L[1:]) >>> aList=['a',['b','c',['d','e']],'f',[],'g']
>>> printList(aList)
a
b
c
d
e
f
g
>>> 由于上例中是列表的嵌套,所以我们必须测试首项是否为一个列表,如果是,则递归调用printList()函数,如果不是,那我们就简单地打印它。处理完首项后,我们将继续处理列表的其他各项。 在大型数据结构中,递归会耗尽内存,因此,如果你的内存比较小,或者想处理很大的数据结构,那么使用更复杂的常规代码可能更安全些。 2.Python有三种名字空间: 局部---在类,模块或方法中定义的名字 模块---在文件中定义的名字 内置---python自身定义的名字 如果要访问模块名字空间,使用import 3.事件驱动编程:面向批处理的程序流程是---启动程序,处理事情,然后终止程序;而事件驱动程序流程是---只有通过事件触发,程序才启动程序,等待事件,然后由事件通知它终止 编写事件驱动程序有两种方式:一是模拟一个事件环境;二是创建一个简单的GUI程序,该程序可利用操作系统和环境来生成事件。 事件捕获和处理的独立性是事件驱动编程的关键特性。
相关文档:
# 直接插入排序
def InsertSort(mylist):
size = len(mylist)
i = 1
for i in range(1, size):
if mylist[i] < mylist[i - 1]:
tmp = mylist[i]
j = i - 1
mylist[j + 1] = mylist[j]
j = j - 1
while j > ......
def MergeSort(mylist, low, mid, high):
i = low
j = mid + 1
tmp = []
while i <= mid and j <= high:
if mylist[i] <= mylist[j]:
tmp.append(mylist[i])
i = i + 1
else:
tmp.append(mylist[j])
j = j + 1
......
# coding=gb2312
# 用中文注释前务必加上第一行
# 求模运算符,和C语言一样
print 10%9
# 整数相除仍然是整数
print 5/2
# 2后加上.就变成浮点数了
print 5/2.
# **表示求幂运算
print 7**4
# 函数用时要加上module.function
import math
print math.floor(19.8)
# 函数名也可以成为变量
func = math.floor
......
1. Building an Application with PyGTK and Glade
2. Creating a GUI using PyGTK and Glade
3. A Beginner's Guide to Using pyGTK and Glade
4. Is there a walkthrough on getting PyGTK2 and libglade2 to work on win32 ......
时常见到一些好的Python模块,如果不随时记下,等用的时候又是一阵乱翻,好在Python引用一个模块极其方便,OK,废话少说:
1. decimal
标准模块,2.4引入,用于浮点数的精确表示:
>>> 0.1 + 0.1 + 0.1 - 0.3
5.5511151231257827e-17
>>> from decimal import Decimal
>>> def _(x): retu ......