2005年06月03日 星期五 15:45
继续:元组(tuple),序列(sequence),字典(dictionary) 15:元组 tuple a=(3,4,5,6) 这就是个元组,括号可以省略 tuple就是 list 的常量化 所以不能 pop ,remove,insert 等 tuple可以下标访问或获得子元组 注意下标用[ ] 不是() >>> b=3,4,5,6,7,8 >>> b[2] 5 >>> b[1:3] (4, 5) tuple可以多变量赋值(其实list也可以多变量赋值的)如 >>> j,k=["df",3] >>> k 3 >>> j 'df' >>> p,q=("e323",k) >>> q 3 >>> p 'e323' 表示只有一个值的tuple用('df',)加个逗号来表示 tuple 是list的简化版,没有动态内存的分配 16:序列sequence sequence 就是list string tuple 的总称 有一些共性以下是主要操作 (a)in 判断某个object在sequence中 >>> x=12 >>> l=[12,13] >>> if x in l : print "x is in l" ... x is in l (b)得到sequence的长度 len(sequence) (c)取下标操作 sequence[i] (d)取子sequence 用 sequence[star : end ] 注意获得的是[sequence[star],sequence[star+1],..,sequence[end-1]] 最后一个是sequence[end-1]不是sequence[end] (e)用加号+ 可以连接两个sequence (f)用称号*可以重复几个sequence 如 >>> (1,2,3)*3 (1, 2, 3, 1, 2, 3, 1, 2, 3) (g)可以使用list comprehension 再复习一下 [for k in L if ] 表示 returnList=[] for k in L: if : returnList.append( ) return returnList; 18: 字典 dictionary 很类似c++中的map >>> PersonInfor={"WuKong":100,"BaJie":80,"WuJing":75} >>> PersonInfor {'WuJing': 75, 'BaJie': 80, 'WuKong': 100} 这就是个dictionary ,用{ } 括起来,用:连接key和value组成pair对应关系 引用的时候以key为下标就可以 >>> PersonInfor['BaJie'] 80 >>> del PersonInfor['WuJing'] #这个我不明白,del的动作是谁发出的, #这个不象面向对象的东西了 >>> PersonInfor {'BaJie': 80, 'WuKong': 100} 也可以用tuple来初始化,前面加上 dict 如: >>> pricelist=dict([('clock',12),("table",100),("xiao",100)]) >>> pricelist {'table': 100, 'xiao': 100, 'clock': 12} >>> pricelist=dict([(x,10*x) for x in [1,2,3]]) >>> pricelist {1: 10, 2: 20, 3: 30} 增加一个字典元素也很简单 直接用赋值就可以了如 >>> pricelist["apple"]=12 读取不存在的元素 就返回异常 >>> pricelist['orange'] Traceback (most recent call last): File " ", line 1, in ? KeyError: 'orange' 19:dictionary的操作 (a)清空dictionary D.clear() (b)复本dictionary D.copy() 注意与 赋值的区别: 这是"="就像取了个别的名字一样 >>> a {'table': 100, 'apple': 12, 'xiao': 100, 'clock': 12} >>> b=a >>> b {'table': 100, 'apple': 12, 'xiao': 100, 'clock': 12} >>> a["milk"]=901 >>> b {'table': 100, 'milk': 901, 'apple': 12, 'xiao': 100, 'clock': 12} 这是"copy" 是独立出来的了 >>> c=a.copy() >>> a["egg"]=405 >>> c {'apple': 12, 'clock': 12, 'table': 100, 'milk': 901, 'xiao': 100} (c)获得值 D.get(key),注意与下标访问D[key]的区别 在对应值不存在的时候一个返回 None 一个返回异常 a.get("abc",100) 其中100为默认值,如果找不到"abc"就返回100 所以D.get(key) 相当与D.get(key,None) (d)查询有无 key c.has_key(key) >>> c {'apple': 12, 'clock': 12, 'table': 100, 'milk': 901, 'xiao': 100} >>> c.has_key('clock') True >>> c.has_key('clocok') False (d)获得元素的list D.items() 多说无用,看个例子就好了 >>> c {'apple': 12, 'clock': 12, 'table': 100, 'milk': 901, 'xiao': 100} >>> c.items() [('apple', 12), ('clock', 12), ('table', 100), ('milk', 901), ('xiao', 100)] (e) 获得所有的keys到 list中 >>> c.keys() ['apple', 'clock', 'table', 'milk', 'xiao'] (f) 获得所有的values到list中 >>> c.values() [12, 12, 100, 901, 100] (g) 更新赋值 D.update(E) 可以这样理解 for k in E.keys(): D[k]=E[k] 注意,D保留了E中没有的元素,D和E有相同的Key 对应的赋值 为E的(key ,value),D中没有的将从E添加进来 (h) 从字典中弹出一个元素并删除 D.popitem() 如果为空了,就返回异常。 注意,dictionary是无序排列的,所以弹出的也是随机的(不知对否) 以上是python的tuple sequence dictionary,完成Python 的数据类型 下一篇将是Python 程序流程控制 邹胖小 2005年6月3日 祝大家快乐安康 周末愉快 我要好好去运动一下,请大家也注意身体 为自己的理想努力工作50年
2005年06月03日 星期五 16:09
建议你去看一下docbook,latex 用它来写文档好些。。生成格式也正规:) -----Original Message----- From: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] On Behalf Of Chao Zou Sent: Friday, June 03, 2005 3:45 PM To: python-chinese at lists.python.cn Subject: [python-chinese] 老菜鸟 邹胖小 学习PYTHON 入门日志 (四) 继续:元组(tuple),序列(sequence),字典(dictionary) 15:元组 tuple a=(3,4,5,6) 这就是个元组,括号可以省略 tuple就是 list 的常量化 所以不能 pop ,remove,insert 等 tuple可以下标访问或获得子元组 注意下标用[ ] 不是() >>> b=3,4,5,6,7,8 >>> b[2] 5 >>> b[1:3] (4, 5) tuple可以多变量赋值(其实list也可以多变量赋值的)如 >>> j,k=["df",3] >>> k 3 >>> j 'df' >>> p,q=("e323",k) >>> q 3 >>> p 'e323' 表示只有一个值的tuple用('df',)加个逗号来表示 tuple 是list的简化版,没有动态内存的分配 16:序列sequence sequence 就是list string tuple 的总称 有一些共性以下是主要操作 (a)in 判断某个object在sequence中 >>> x=12 >>> l=[12,13] >>> if x in l : print "x is in l" ... x is in l (b)得到sequence的长度 len(sequence) (c)取下标操作 sequence[i] (d)取子sequence 用 sequence[star : end ] 注意获得的是[sequence[star],sequence[star+1],..,sequence[end-1]] 最后一个是sequence[end-1]不是sequence[end] (e)用加号+ 可以连接两个sequence (f)用称号*可以重复几个sequence 如 >>> (1,2,3)*3 (1, 2, 3, 1, 2, 3, 1, 2, 3) (g)可以使用list comprehension 再复习一下 [for k in L if ] 表示 returnList=[] for k in L: if : returnList.append( ) return returnList; 18: 字典 dictionary 很类似c++中的map >>> PersonInfor={"WuKong":100,"BaJie":80,"WuJing":75} >>> PersonInfor {'WuJing': 75, 'BaJie': 80, 'WuKong': 100} 这就是个dictionary ,用{ } 括起来,用:连接key和value组成pair对应关系 引用的时候以key为下标就可以 >>> PersonInfor['BaJie'] 80 >>> del PersonInfor['WuJing'] #这个我不明白,del的动作是谁发出的, #这个不象面向对象的东西了 >>> PersonInfor {'BaJie': 80, 'WuKong': 100} 也可以用tuple来初始化,前面加上 dict 如: >>> pricelist=dict([('clock',12),("table",100),("xiao",100)]) >>> pricelist {'table': 100, 'xiao': 100, 'clock': 12} >>> pricelist=dict([(x,10*x) for x in [1,2,3]]) >>> pricelist {1: 10, 2: 20, 3: 30} 增加一个字典元素也很简单 直接用赋值就可以了如 >>> pricelist["apple"]=12 读取不存在的元素 就返回异常 >>> pricelist['orange'] Traceback (most recent call last): File " ", line 1, in ? KeyError: 'orange' 19:dictionary的操作 (a)清空dictionary D.clear() (b)复本dictionary D.copy() 注意与 赋值的区别: 这是"="就像取了个别的名字一样 >>> a {'table': 100, 'apple': 12, 'xiao': 100, 'clock': 12} >>> b=a >>> b {'table': 100, 'apple': 12, 'xiao': 100, 'clock': 12} >>> a["milk"]=901 >>> b {'table': 100, 'milk': 901, 'apple': 12, 'xiao': 100, 'clock': 12} 这是"copy" 是独立出来的了 >>> c=a.copy() >>> a["egg"]=405 >>> c {'apple': 12, 'clock': 12, 'table': 100, 'milk': 901, 'xiao': 100} (c)获得值 D.get(key),注意与下标访问D[key]的区别 在对应值不存在的时候一个返回 None 一个返回异常 a.get("abc",100) 其中100为默认值,如果找不到"abc"就返回100 所以D.get(key) 相当与D.get(key,None) (d)查询有无 key c.has_key(key) >>> c {'apple': 12, 'clock': 12, 'table': 100, 'milk': 901, 'xiao': 100} >>> c.has_key('clock') True >>> c.has_key('clocok') False (d)获得元素的list D.items() 多说无用,看个例子就好了 >>> c {'apple': 12, 'clock': 12, 'table': 100, 'milk': 901, 'xiao': 100} >>> c.items() [('apple', 12), ('clock', 12), ('table', 100), ('milk', 901), ('xiao', 100)] (e) 获得所有的keys到 list中 >>> c.keys() ['apple', 'clock', 'table', 'milk', 'xiao'] (f) 获得所有的values到list中 >>> c.values() [12, 12, 100, 901, 100] (g) 更新赋值 D.update(E) 可以这样理解 for k in E.keys(): D[k]=E[k] 注意,D保留了E中没有的元素,D和E有相同的Key 对应的赋值 为E的(key ,value),D中没有的将从E添加进来 (h) 从字典中弹出一个元素并删除 D.popitem() 如果为空了,就返回异常。 注意,dictionary是无序排列的,所以弹出的也是随机的(不知对否) 以上是python的tuple sequence dictionary,完成Python 的数据类型 下一篇将是Python 程序流程控制 邹胖小 2005年6月3日 祝大家快乐安康 周末愉快 我要好好去运动一下,请大家也注意身体 为自己的理想努力工作50年
2005年06月03日 星期五 23:08
Python 写的txt2targs 也非常好用! http://wiki.woodpecker.org.cn/moin/txt2tags 用来组织文档的话!!! 2005/6/3, Neo Chan (netkiller) <neo.chen at achievo.com>: > 建议你去看一下docbook,latex 用它来写文档好些。。生成格式也正规:) > > -----Original Message----- > From: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] On Behalf Of Chao Zou > Sent: Friday, June 03, 2005 3:45 PM > To: python-chinese at lists.python.cn > Subject: [python-chinese] 老菜鸟 邹胖小 学习PYTHON 入门日志 (四) > > 继续:元组(tuple),序列(sequence),字典(dictionary) > 15:元组 tuple > a=(3,4,5,6) 这就是个元组,括号可以省略 > tuple就是 list 的常量化 > 所以不能 pop ,remove,insert 等 > tuple可以下标访问或获得子元组 > 注意下标用[ ] 不是() > >>> b=3,4,5,6,7,8 > >>> b[2] > 5 > >>> b[1:3] > (4, 5) > tuple可以多变量赋值(其实list也可以多变量赋值的)如 > >>> j,k=["df",3] > >>> k > 3 > >>> j > 'df' > >>> p,q=("e323",k) > >>> q > 3 > >>> p > 'e323' > 表示只有一个值的tuple用('df',)加个逗号来表示 > tuple 是list的简化版,没有动态内存的分配 > 16:序列sequence > sequence 就是list string tuple 的总称 有一些共性以下是主要操作 > (a)in 判断某个object在sequence中 > >>> x=12 > >>> l=[12,13] > >>> if x in l : print "x is in l" > ... > x is in l > (b)得到sequence的长度 len(sequence) > (c)取下标操作 sequence[i] > (d)取子sequence 用 sequence[star : end ] > 注意获得的是[sequence[star],sequence[star+1],..,sequence[end-1]] > 最后一个是sequence[end-1]不是sequence[end] > (e)用加号+ 可以连接两个sequence > (f)用称号*可以重复几个sequence 如 > >>> (1,2,3)*3 > (1, 2, 3, 1, 2, 3, 1, 2, 3) > (g)可以使用list comprehension 再复习一下 > [for k in L if > 表示 > returnList=[] > for k in L: > if] : returnList.append( > return returnList; > 18: 字典 dictionary > 很类似c++中的map > >>> PersonInfor={"WuKong":100,"BaJie":80,"WuJing":75} > >>> PersonInfor > {'WuJing': 75, 'BaJie': 80, 'WuKong': 100} > 这就是个dictionary ,用{ } 括起来,用:连接key和value组成pair对应关系 > 引用的时候以key为下标就可以 > >>> PersonInfor['BaJie'] > 80 > > >>> del PersonInfor['WuJing'] #这个我不明白,del的动作是谁发出的, > #这个不象面向对象的东西了 > >>> PersonInfor > {'BaJie': 80, 'WuKong': 100} > 也可以用tuple来初始化,前面加上 dict 如: > >>> pricelist=dict([('clock',12),("table",100),("xiao",100)]) > >>> pricelist > {'table': 100, 'xiao': 100, 'clock': 12} > >>> pricelist=dict([(x,10*x) for x in [1,2,3]]) > >>> pricelist > {1: 10, 2: 20, 3: 30} > 增加一个字典元素也很简单 直接用赋值就可以了如 > >>> pricelist["apple"]=12 > 读取不存在的元素 就返回异常 > >>> pricelist['orange'] > Traceback (most recent call last): > File ") ", line 1, in ? > KeyError: 'orange' > 19:dictionary的操作 > (a)清空dictionary > D.clear() > (b)复本dictionary > D.copy() > 注意与 赋值的区别: > 这是"="就像取了个别的名字一样 > >>> a > {'table': 100, 'apple': 12, 'xiao': 100, 'clock': 12} > >>> b=a > >>> b > {'table': 100, 'apple': 12, 'xiao': 100, 'clock': 12} > >>> a["milk"]=901 > >>> b > {'table': 100, 'milk': 901, 'apple': 12, 'xiao': 100, 'clock': 12} > 这是"copy" 是独立出来的了 > >>> c=a.copy() > >>> a["egg"]=405 > >>> c > {'apple': 12, 'clock': 12, 'table': 100, 'milk': 901, 'xiao': 100} > (c)获得值 > D.get(key),注意与下标访问D[key]的区别 > 在对应值不存在的时候一个返回 None 一个返回异常 > a.get("abc",100) 其中100为默认值,如果找不到"abc"就返回100 > 所以D.get(key) 相当与D.get(key,None) > (d)查询有无 key > c.has_key(key) > >>> c > {'apple': 12, 'clock': 12, 'table': 100, 'milk': 901, 'xiao': 100} > >>> c.has_key('clock') > True > >>> c.has_key('clocok') > False > (d)获得元素的list > D.items() 多说无用,看个例子就好了 > >>> c > {'apple': 12, 'clock': 12, 'table': 100, 'milk': 901, 'xiao': 100} > >>> c.items() > [('apple', 12), ('clock', 12), ('table', 100), ('milk', 901), > ('xiao', 100)] > (e) 获得所有的keys到 list中 > >>> c.keys() > ['apple', 'clock', 'table', 'milk', 'xiao'] > (f) 获得所有的values到list中 > >>> c.values() > [12, 12, 100, 901, 100] > (g) 更新赋值 > D.update(E) > 可以这样理解 > for k in E.keys(): > D[k]=E[k] > 注意,D保留了E中没有的元素,D和E有相同的Key 对应的赋值 > 为E的(key ,value),D中没有的将从E添加进来 > (h) 从字典中弹出一个元素并删除 > D.popitem() > 如果为空了,就返回异常。 > 注意,dictionary是无序排列的,所以弹出的也是随机的(不知对否) > > 以上是python的tuple sequence dictionary,完成Python 的数据类型 > 下一篇将是Python 程序流程控制 > > 邹胖小 2005年6月3日 祝大家快乐安康 周末愉快 我要好好去运动一下,请大家也注意身体 > 为自己的理想努力工作50年 > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > > > -- [Time is unimportant, only life important!]
2005年06月05日 星期日 18:26
继续:程序流程控制 就3种 顺序,选择,循环 20:选择 if ,else ,elif 注意缩进 ,注意冒号分隔尤其是在else后的,注意elseif 被写成了elif , 注意Python 没有switch 可以用elif 来代替,注意可以单行直接写上 (a) if: (b) if : (c) if : else : (d) if : elif : elif : ... else : 21:循环for ,while,range(),break,continue 注意 可以是list ,string,tuple,dictionary 注意else 的用法 可以表示在循环外的条件下调用else 如果循环是被break的,就不执行else了 如果循环是正常接受 ,就执行else 注意冒号分隔 注意也可以单行直接写上 (a) for a in : else: (b) for a in : (c) break 强行退出循环 (d) 修改循环变量不会影响循环次数 也不会影响 如: >>> a=[1,2,3,4,5] >>> for x in a: ... x=x+1 ... print x ... print a ... 2 [1, 2, 3, 4, 5] 3 [1, 2, 3, 4, 5] 4 [1, 2, 3, 4, 5] 5 [1, 2, 3, 4, 5] 6 [1, 2, 3, 4, 5] (e) range(start ,end ,step) 其实就是返回一个list 成为循环的范围,其它能返回list也可以用 注意range不会出现死循环,但会返回空list for a in range : else: (f) while : else: 以上是Python 程序流程控制 下一篇将是Python 的函数 邹胖小 2005年6月5日 祝大家快乐安康 被驴友放鸽子,下雨郁闷发日志以记之
2005年06月05日 星期日 18:53
Chao Zou wrote: > 20:选择 if ,else ,elif > 注意缩进 ,注意冒号分隔尤其是在else后的,注意elseif 被写成了elif , > 注意Python 没有switch 可以用elif 来代替,注意可以单行直接写上 如果switch的分支少的话可以用elif代替,如果有分支数目比较多,用dict效率会 比elif高。 > (a) if: 不推荐这种写法,最好还是写成两行 [snip] > 21:循环for ,while,range(),break,continue > 注意可以是list ,string,tuple,dictionary 可以是任何iterable object。 [snip] > (e) range(start ,end ,step) 其实就是返回一个list > 成为循环的范围,其它能返回list也可以用 > 注意range不会出现死循环,但会返回空list 如果range返回的list元素过多,会导致内存占用较多,效率低下。这时可以使用 xrange(start, end, step)。 [snip] -- Qiangning Hong _________________________________________ < Do students of Zen Buddhism do Om-work? > ----------------------------------------- \ ,__, \ (**)____ (__) )\ U ||--|| *
Zeuux © 2025
京ICP备05028076号