• python 学习备忘


    list列表排序

    def listdir(path):   #返回一个排序后的目录list
            files=os.listdir(path)
            files.sort(key=lambda x:str(x[:-4]))
            return files
    

    生成一个000-999的字符串list列表  

        print (list('{:0>3}'.format(str(x)) for x in range(1000)))
    

     

    3 in [1, 2, 3]    True    元素是否存在于列表中
    
    for x in [1, 2, 3]: print x,    1 2 3    迭代
    
     L = list(range(100))    [0, 1, 2, 3, ..., 99]
    
    L[:10]   #前10个数
    L[-10:]  #后10个数
    L[10:20] #前11-20个数
    L[:10:2]  #前10个数,每两个取一
    L[:10:2]   #前10个数,每两个取一个:
    [0, 2, 4, 6, 8]

     lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。

    >>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
    >>> print filter(lambda x: x % 3 == 0, foo)
    [18, 9, 24, 12, 27]
    >>> print map(lambda x: x * 2 + 10, foo)
    [14, 46, 28, 54, 44, 58, 26, 34, 64]
    >>> print reduce(lambda x, y: x + y, foo)
    139
    >>> f=lambda x,y:x if x >y else y >>> f(33,44) 44
    x in y x在y中 -> True; x不在y中 -> False
    
    复制问题 li1 = li2[:] 深拷贝(等同于 li1 = li2.copy()); 浅拷贝li1 = li2(li1会随li2的变化而变)
    
    li1.clear() 清空列表,列表仍存在[]
    三元操作符
    small = x if x < y else y
    
    相当于:
    if x < y:
        small = x
    else:
        small = y
    
    

     from collections import Counter

    collections.Counter(参数) 
    #参数可以是list、str、tuple、None等等
    #作用:统计参数每个元素出现的次数
    #返回:一个字典(元素作为key存储,元素出现次数作为value存储)
    
    #####例子:
    c = Counter('gallahad')
    # 输出: Counter({'a': 3, 'd': 1, 'g': 1, 'h': 1, 'l': 2})
    
    c.update('adc') # 在原来基础上更新计数(直接修改c)
    # 输出: Counter({'a': 4, 'c': 1, 'd': 2, 'g': 1, 'h': 1, 'l': 2})
    
    c.most_common()
    # 输出:[('a', 4), ('l', 2), ('d', 1), ('g', 1), ('b', 1), ('c', 1), ('h', 1)]
    # 相当于字典排序:sorted(c.items(), key=lambda asd:asd[1], reverse=True)
    符号
    ()小括号 -- 分组
    
    []中括号 -- 字符类,匹配所包含的任一字符 #注:字符集合把【】里面的内容当作普通字符!(-^除外)
    
    {}大括号 -- 限定匹配次数
    
    | 或 r'AC|D' -> AC或AD
    
    . 匹配任一字符( 除外)
    
    . 匹配字符.
    
    ^ 脱字符 匹配输入字符串的开始位置 # r'^AC'
    
    匹配字符串末尾 # r'AC匹配字符串末尾 # r'AC'
    
     匹配一个单词的边界 (单词定义为字母,数字,下划线) ;B 与 相反 匹配非单词边界
    
    d 匹配任一数字[0-9] ; D 与 d相反,[^0-9]
    
    s 匹配空白字符【	 
     
     f v】;S与s相反
    
    w 匹配字母 数字 下划线(中文也可以) 【a-z A-Z 0-9 _】; W与w相反
    
    * 匹配子表达式0次或多次,等价于 {0,}
    
    + 匹配子表达式1次或多次,等价于 {1, }
    
    ? 匹配子表达是0次或1次,等价于{01}
    
    贪婪模式
    贪婪模式(python正则表达式中默认使用),尽可能多的去匹配
    
    s = '<html><title>ssss<html><	itle>'
    
    re.search(r'<.+>',s)
    #输出: '<html><title>ssss<html><	itle>'
    启用非贪婪模式
    
    re.search(r'<.+?>', s)
    # 输出: <html>
    命令
    1. re.search()
    
    复制代码
    s = 'Bo ke yuan'
    
    result = re.search(r'(w+) (w+)', s)
    result.group() # 'Bo ke'
    result.group(1) # 'Bo'; result.group(2) # 'ke'
    
    result.start() #0 (匹配起始位置)
    result.end() #5 (匹配结束位置)
    result.span() #(0, 5) (匹配范围)
    复制代码
    2. re.findall()
    
    如果给出的正则表达式包含子组,就会把子组的内容单独返回回来。
    
    若包含多个子组,将匹配的内容组合成元组返回
    
    如何让子组不捕获内容?
    
      非捕获组(?:) 把所有出现子组的地方都加 ?:
    
    3. re.compile() 编译正则表达式
    
    如果你需要重复的使用某个正则表达式,那么你可以先将正则表达式编译成模式对象。
    
    p = re.compile(r'[A-Z]')
    p.search('Bo Ke Yuan') # ['B']
    p.findall('Bo Ke Yuan') # ['B', 'K', 'Y']
     2. 参数:argparse
    基本用法:
    
    复制代码
    import argparse # step1. 导入模块
    
    parser = argparse.ArgumentParser() # step2. 创建参数解析对象
    
    parser.add_argument() # step3. 添加参数
    """位置参数:parser.add_argument("echo", help="参数描述")  必选
        可选参数: parser.add_argument("--verbosity", help="参数描述")  可选
    """
    
    args = parser.parse_args() # step4. 解析参数
    """位置参数访问:args.echo
        可选参数访问:args.verbosity
    """
    正则表达式:re
  • 相关阅读:
    斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”笔记
    面向对象基础知识二、对象的创建和销毁
    英语思维20210907
    英语思维20210908
    3.2 Dependencies of the Projects in the Solution 解决方案中项目间的依赖项
    面向对象基础知识三、对象组合
    面向对象基础知识四、对象复制
    3 Implementation: The Big Picture 实现:蓝图
    面向对象基础知识五、对象序列化
    英语思维20210906
  • 原文地址:https://www.cnblogs.com/yangjig/p/10201257.html
Copyright © 2020-2023  润新知