Python易忽视知识点小结

839次阅读  |  发布于5年以前

这里记录Python中容易被忽视的小问题

一、input(...)和raw_input(...)


    #简单的差看帮助文档input(...)和raw_input(...)有如下区别 
    >>> help(input) 
    Help on built-in function input in module __builtin__: 
    input(...) 
      input([prompt]) -> value 
      Equivalent to eval(raw_input(prompt)). 
    >>> help(raw_input) 
    Help on built-in function raw_input in module __builtin__: 
    raw_input(...) 
      raw_input([prompt]) -> string 

      Read a string from standard input. The trailing newline is stripped. 
      If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError. 
      On Unix, GNU readline is used if enabled. The prompt string, if given, 
      is printed without a trailing newline before reading. 

    #可见 input会根据输入的内容eval结果来返回值,即输入纯数字,则得到的就是纯数字 
    #     raw_input返回的才是字符串 
    #test: 
    >>> a = input("输入数字") 
    输入数字1 
    >>> type(a) 
    <type 'int'> 
    >>> b=raw_input("输入数字") 
    输入数字1 
    >>> type(b) 
    <type 'str'> 

ps:在python3.0以后的版本中,raw_input和input合体了,取消raw_input,并用input代替,所以现在的版本input接收的是字符串

二、python三目运算符

虽然Python没有C++的三目运算符(?:),但也有类似的替代方案,

那就是
1、 true_part if condition else false_part


    >>> 1 if True else 0 
    1 
    >>> 1 if False else 0 
    0 
    >>> "True" if True else "False" 
    'True' 
    >>> "True" if True else "False" 
    'Falser' 

2、 (condition and [true_part] or [false_part] )[0]


    >>> (True and ["True"] or ["False"])[0] 
    'True' 
    >>> (False and ["True"] or ["False"])[0] 
    'False' 
    >>>  

三、获得指定字符串在整个字符串中出现第N次的索引


    # -*- coding: cp936 -*- 
    def findStr(string, subStr, findCnt): 
      listStr = a.split(subStr,findCnt) 
      if len(listStr) <= findCnt: 
        return -1 
      return len(string)-len(listStr[-1])-len(subStr) 
    #test 
    a = "12345(1)254354(1)3534(1)14" 
    sub = "(1)" 
    N = 2   #查找第2次出现的位置 
    print findStr(a,sub,N) 
    N = 10   #查找第10次出现的位置 
    print findStr(a,sub,N) 
    #结果 
    #>>>  
    #14 
    #-1 

四、enumerate用法:

遍历序列的时候,可能同时需要用到序列的索引和对应的值,这时候可以采用enumerate方法进行遍历

enumerate的说明如下:


    >>> help(enumerate) 
    Help on class enumerate in module __builtin__: 

    class enumerate(object) 
     | enumerate(iterable[, start]) -> iterator for index, value of iterable 
     |  
     | Return an enumerate object. iterable must be another object that supports 
     | iteration. The enumerate object yields pairs containing a count (from 
     | start, which defaults to zero) and a value yielded by the iterable argument. 
     | enumerate is useful for obtaining an indexed list: 
     |   (0, seq[0]), (1, seq[1]), (2, seq[2]), ... 
     |  
     | Methods defined here: 
     |  
     | __getattribute__(...) 
     |   x.__getattribute__('name') <==> x.name 
     |  
     | __iter__(...) 
     |   x.__iter__() <==> iter(x) 
     |  
     | next(...) 
     |   x.next() -> the next value, or raise StopIteration 
     |  
     | ----------------------------------------------------------------------
     | Data and other attributes defined here: 
     |  
     | __new__ = <built-in method __new__ of type object> 
     |   T.__new__(S, ...) -> a new object with type S, a subtype of T 

五、遍历序列的方法


    >>> List = ['a','b','c'] 
    >>> for index, value in enumerate(List): 
      print index, value 
    0 a 
    1 b 
    2 c 
    >>>  

六、使用python random模块的sample函数从列表中随机选择一组元素


    import 
    List = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  
    slice = random.sample(List, 5)
    #从List中随机获取5个元素,作为一个片断返回  
    print slice  
    print List #原有序列并没有改变。

七、用json打印包含中文的列表字典等


    # -*- coding:utf-8 -*- 
    import json 
    #你的列表 
    listA = [{'path': ['[AWS] \xe7\xbe\x8e\xe5\xb0\x91\xe5\xa5\xb3\xe6\x88\x98\xe5\xa3\xab Sailor Moon Crystal - Moon Pride MV[BIG5][BDrip 1080p x264 AAC][6E5CFE86].mp4'], 'length': 131248608L}, {'path': ['[AWS] \xe7\xbe\x8e\xe5\xb0\x91\xe5\xa5\xb3\xe6\x88\x98\xe5\xa3\xab Sailor Moon Crystal - Moon Pride MV[BIG5][BDrip 720p x264 AAC][639D304A].mp4'], 'length': 103166306L}, {'path': ['[AWS] \xe7\xbe\x8e\xe5\xb0\x91\xe5\xa5\xb3\xe6\x88\x98\xe5\xa3\xab Sailor Moon Crystal - Moon Pride MV[BIG5][BDrip 480p x264 AAC][5A81BACA].mp4'], 'length': 75198408L}]
    #打印列表
    print json.dumps(listA, encoding='UTF-8', ensure_ascii=False) 

输出结果:


    >>>  
    [{"path": ["[AWS] 美少女战士 Sailor Moon Crystal - Moon Pride MV[BIG5][BDrip 1080p x264 AAC][6E5CFE86].mp4"], "length": 131248608}, {"path": ["[AWS] 美少女战士 Sailor Moon Crystal - Moon Pride MV[BIG5][BDrip 720p x264 AAC][639D304A].mp4"], "length": 103166306}, {"path": ["[AWS] 美少女战士 Sailor Moon Crystal - Moon Pride MV[BIG5][BDrip 480p x264 AAC][5A81BACA].mp4"], "length": 75198408}] 

希望本文所述对大家的Python程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8