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次,等价于{0,1} 贪婪模式 贪婪模式(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 """