Python论坛  - 讨论区

标题:[python-chinese] 老菜鸟 邹胖小 学习PYTHON 入门日志 (四)

2005年06月03日 星期五 15:45

Chao Zou chao.zou at gmail.com
Fri Jun 3 15:45:12 HKT 2005

继续:元组(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年

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月03日 星期五 16:09

Neo Chan (netkiller) neo.chen at achievo.com
Fri Jun 3 16:09:43 HKT 2005

建议你去看一下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年

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月03日 星期五 23:08

Zoom Quiet zoom.quiet at gmail.com
Fri Jun 3 23:08:13 HKT 2005

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!]

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月05日 星期日 18:26

Chao Zou chao.zou at gmail.com
Sun Jun 5 18:26:31 HKT 2005

继续:程序流程控制
就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日 祝大家快乐安康   被驴友放鸽子,下雨郁闷发日志以记之

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月05日 星期日 18:53

Qiangning Hong hongqn at gmail.com
Sun Jun 5 18:53:58 HKT 2005

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 ||--|| *

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号