迭代:
迭代是Python最强大的功能之一,是访问集合元素的一种方式。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
字符串,列表或元组对象都可用于创建迭代器
自定义迭代器:
class rewrite(object): 测试:1 def __init__(self,max=0): 3 self.max = max self.num = 1 def __iter__(self): return self def __next__(self): if self.num<= self.max: num = self.num self.num +=2 return num else: return StopIteration() i=rewrite(5) print(i.__next__()) print(i.__next__())
迭代中_iter_和_netx_的使用
num=[1,2,3,4] 测试:1 it = iter(num) print(it.__next__())
list = [2, 4, 6, 8] 测试:2 it = iter(list) 4 while True: 6 try: 8 print(next(it)) except StopIteration: sys.exit()
推导式:
comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体,分为三种:
1,列表推导式:(使用[]生成list)
numbers = [names for names in range(2000) if (names %400==0)or(names %4==0 and names %100!=0)] print(numbers)
输出:闰年,数量太多,不便写上
def ten(x): return x+x number = [ten(x) for x in range(10)if x%2==0] print(number)
测试:[0, 4, 8, 12, 16]
2,集合推导式(使用{}生成集合)
id = {x%2 for x in [100,121,131,140,181,200]} print(id)
测试:{0, 1}
3,字典推导式(他也是要用{}生成字典,不过要是key,value形式才行)
mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}mcase_frequency = {v: k for k, v in mcase.items()}
print (mcase_frequency)
测试:{10: 'a', 34: 'b', 7: 'A', 3: 'Z'}
日志:
Python中有一个模块logging,可以直接记录日志
# 日志级别
# CRITICAL 50
# ERROR 40
# WARNING 30
# INFO 20
# DEBUG 10
logging.basicConfig()函数中的具体参数:
filename: 指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中;
filemode: 文件打开方式,在指定了filename时使用这个参数,默认值为“w”还可指定为“a”;
format: 指定handler使用的日志显示格式;
datefmt: 指定日期时间格式。,格式参考strftime时间格式化(下文)
level: 设置rootlogger的日志级别
stream: 用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。
若同时列出了filename和stream两个参数,则stream参数会被忽略。
filename: 指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中;
filemode: 文件打开方式,在指定了filename时使用这个参数,默认值为“w”还可指定为“a”;
format: 指定handler使用的日志显示格式;
datefmt: 指定日期时间格式。,格式参考strftime时间格式化(下文)
level: 设置rootlogger的日志级别
stream: 用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。
若同时列出了filename和stream两个参数,则stream参数会被忽略。