zip() 处理多个迭代器对象,将对象中的对应元素一一对应组合成一个个元组,返回由元组组成的列表对象
a = [1,2,3,4]
b = [4,5,6]
zip(a,b) => [(1,4),(2,5),(3,6)] 以短的为主
如何实现两个列表的逐元素相减
list1 = [1,2,3]
list2 = [6,4,8]
list3 = list(map(lambda x:x[0]-x[1],zip(list2,list1)))
list3 => [5,2,3]
如何编写微妙级别的延迟
time.sleep() 函数延迟是毫秒级,最低延迟1毫秒,那如何延迟到微妙级呢?
def sleep_us(us: int):
"""
sleep的微妙级定义
:param us: 延迟微妙数 -3是自身调用函数,执行循环等指令损耗的时间,单位us
:return:
"""
start, end = 0, 0
start = time.time()
us = (us - 3) / 1000000
while end - start < us:
end = time.time()
以管理员的身份运行python文件
import sys
if not windll.shell32.IsUserAnAdmin():
# 不是管理员就提权
windll.shell32.ShellExecuteW(
None, "runas", sys.executable, __file__, None, 1)
如何获取当前时间戳
# 使用time模块
time.time()
运算符优先顺序:not>and>or
线程中的start join daemon
thread_num = threading.Thread(target=action, args=my_tuple) #线程创建
thread_num.start() #线程启动,进入就绪状态,等待cpu执行
thread_num.join(timeout) #使当前这个线程的调用者优先获得cpu资源,timeout指定最多霸占cpu资源的时间
thread_num.setDaemon(True) #设置为守护线程,只主线程结束后,哪怕没完成thread_num线程也将立即结束
如何删除列表中的一个值
# remove方法:该方法没有返回值但是会移除列表中的某个值的第一个匹配项
list.remove('xxx') 重点:不是按索引删除哦
# del方法
del list[1] 重点:按索引删除数值,还可以删除范围内值
del list[2:4]
# pop方法,也是索引删除,返回删除的数值
list.pop(2)
字符串转列表 列表转字符串
mylist = mystring.split('_',split_count)
mystring = '_'.join(mylist)
python的推导式(for表达式)怎么用
语法格式:[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]
其实就是:
for 迭代变量 in 可迭代对象:
if 条件表达式:
表达式
python.exe和pythonw.exe的区别
python.exe在运行程序的时候,会弹出一个黑色的控制台窗口(也叫命令行窗口、DOS/CMD窗口)对应 *.py 文件
pythonw.exe是无窗口的Python可执行程序,意思是在运行程序的时候,没有窗口,代码在后台执行,对应 *.pyw 文件
队列的使用
python中有内置的队列库Queue,使用如下:
import Queue as _queue
queue = _queue.Queue(maxsize=2) 创建一个先进先出的队列,长度为2
queue_2 = _queue.LifoQueue(maxsize=3) 创建一个先进后出的队列,长度为3
queue.put(i) 入队
queue.get(i) 出队
python 列表乘一个数字N
表示列表内的元素重复N遍,比如
list1 = [0,1]
list2 = list1 * 2
list2 : [0,1,0,1]
如果是多维的比如列表、字典式列表(引用类型列表),也是重复N次,但是它是引用的多次复制,改一个值,其他也会变
list3 = [[0,1],[2,3]]
list4 = list3 * 2
list4 : [[0,1],[2,3],[0,1],[2,3]]
list4[0][0] = 5
list4 : [[5, 1], [2, 3], [5, 1], [2, 3]]
你看第一项和第三项的数据都变成了[5,1],因为是引用修改,他们的指针是一样的。