-
python如何实现Stack
说明 1、栈是线性数据结构,其特点是元素的增加和删除都是入栈和弹栈的形式(遵循先进后出或后进先出的原则。 2、stack可以使用python内置的list实现,因为list是属于线性数组,在末尾插入和删除一个元素所使用的时间都是O(1),这非常符合stack的要求。当然,也可以使用链表来实现。 实例 class Stack(object): def __init__(self): self.items = [] def is_empty(self): …
-
Python中tail -f如何实现
说明 1、tail-f默认先读取最后10行数据,然后从文件末尾读取实时数据。如果是小文件,可以先读取所有文件内容,输出最后10行。 2、读取全文后获取最后10行的性能并不高,后滚10行的边界条件也很复杂。先获取全文,再得到最后10行的实现。 实例 import time import sys from typing import Callable, NoReturn class Tail(object): def __init__( self, …
-
python coroutine的运行过程
说明 1、先调用函数获取生成器对象,再调用next方法或send(None)方法打开coroutine。 2、打开后,函数执行到yield位置,返回yield后挂起,把控制流交回主线程。再调用send法时,可以传输数据并激活协程,继续执行到最后或下一个yield语句。 实例 “”” # BEGIN CORO_AVERAGER_TEST >>> coro_avg = averager() # <1> >>> next(coro_av…
-
python Future的两种使用
1、通过submit提交任务创建获得任务的future对象,通过as_completed等待future对象结束,获得结果。as_completed接收future对象的迭代器。 with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor: # Start the load operations and mark each future with its URL future_to_url = {ex…
-
python else在循环语句执行的情况
1、当循环体没有执行break的时候,即循环体正常结束。 print(“两次输入机会”) for i in range(2): num = int(input(“请输入一个数字:”)) if 10 == num: print(“10 == num,触发break,不会执行else子句”) break else: print(“循环体没有执行break语句,执行else子句”) print(“程序结束”) 当没有触发break时,执行else…
-
python pprint.pformat()函数的使用
1、pprint.pformat()函数返回要打印的内容的文本字符串,这个字符串既易于阅读,也是语法上正确的Python代码。 import pprint cats = [{‘name’:’Zophie’,’desc’:’chubby’},{‘name’:’Pooka’,’desc’:’fluffy’}] pprint.pformat(cats) fileObj = open(‘myCats.py’,’w’) fileObj.write(‘cats = ‘+pprint.pformat(c…
-
python使用shelve保存变量
1、用shelve模块,可以将Python中的变量保存到二进制的shelf文件中。这样,程序就可以从硬盘中恢复变量的数据。 import shelve shelfFile = shelve.open(‘mydata’) cats = [‘Zonphie’,’Pooka’,’Simon’] shelfFile[‘cats’] = cats shelfFile.close() 2、shelf值不必用读模式或写模式打开,因为打开后,既能读又能写。 shelfFile = shelve.open(‘my…
-
python format()的下标匹配
说明 1、当format()中的参数为元组、列表或字典时,在字符串模板中使用下标0[0]或key 0[key]来指定引用关系。 2、元组、列表或字典仍使用位置编号。 实例 >>> para=(“Tome”,”cat”) >>> “Hello {0[0]}’s {0[1]}”.format(para) “Hello Tome’s cat” >>> “Hello {0[0]}’s {0[1]}”.format(para) “Hello Tome’…
-
python有哪些匹配替换
1、位置匹配 字符串模板中,直接使用{}一对大括号,与format()中的参数,按照大括号位置匹配。 >>> “{}”.format(1) ‘1’ >>> “Hello {}’s {}”.format(“Tom”,”cat”) “Hello Tom’s cat” >>> “{{Hello}} {}’s {}”.format(“Tom”,”cat”) “{Hello} Tom’s cat” 2、编号匹配 {0},{1}…大括号中,可以加入f…
-
python中%格式表达式如何使用
1、通过%格式表达式可以构建对象的格式化字符串输出。%表达式,由%分隔,左侧为格式字符串,由固定字符串和%开头的格式化样式组成,右侧为实际的对象,或对象元组。 >>> ‘%o’ % 10 ’12’ >>> ‘%.3f’ % 0.1234 ‘0.123’ >>> ‘%-10s’ % ‘abcdefg’+’___’ ‘abcdefg ___’ >>> ‘Sum = %d’ % 5050 ‘Sum = 5050’ >&g…