python常用基础知识1
数组for循环输出,带索引:
for index, item in enumerate(name_list): print(index) print(item)
字符串查找子字符串:
beg, end 起始结束位置可选
"34123456".index("34") # 0 "34123456".rindex("34", beg=0, end=len("34123456")) # 4 (最后出现的位置)
参考:https://www.runoob.com/python/att-string-rindex.html
倒序:
1. while
n = eval(input()) i = n while True: if i == -1: break print(i) i -= 1
2.for
for i in range(7,1,-1): # 同正序一样,包头不包尾 print(i)
参考:https://blog.csdn.net/huitinfeng/article/details/100593189
整除,取模
除法/
总是返回一个浮点数,如:
>>> 6/4 1.5 >>> 2/3 0.6666666666666666
到整数的结果,丢弃分数部分,可以使用运算符 //
>>> 6//4
1
>>> 2//3
0
# 与分母分子的数据类型有关系
>>> 6//4.0 1.0
>>> 2.0//3 0.0
# Python3除法采取的是向下取整,即向负无穷方向取最接近精确值的整数
>>> 4//-3 -2
>>> -10//3 -4
# 如果希望在Python3中对负数采用向零取整
>>> int(4/-3) -1
>>> int(-10/3) -3
采用%
表示取模运算
>>> 21%10 1 >>> 3%4 3 # 同样,负数稍有不同 >>> -21%10 9 >>> -5%4 3
参考:https://blog.csdn.net/u012626619/article/details/80671233
python 中幂次方 **
>>> 5**2 25 >>> 1e-02 0.01 >>> 10e-03 0.01 >>> 2e4 20000.0
使用正则完成字符串替换:
import re new_y1 = 'yy1' new_y2 = 'yy2' template = "xxx xx{y1}x xx{y2}x xxxx" t1 = re.sub(r'\{y1\}', new_y1, template, 0, re.M) # 0 替换次数全部替换 re.M 多行匹配,影响 ^ 和 $ t2 = re.sub(r'\{y2\}', new_y2, t1, 0, re.M)
字符串格式化:https://www.runoob.com/python/att-string-format.html
运行时间计时
# 装饰器,计算运行的时间 def timer(func): def decor(*args): start_time = time.time() func(*args) end_time = time.time() d_time = end_time - start_time print("the running time is : ", d_time) return decor # 需要被计时的函数 @timer def xxx(): time.sleep(2)
保留2位小数
def get_n_float(f_str, n): # f_str 为待处理的数,n为要保留的位数,保留时不做四舍五入 f_str = str(f_str) a, b, c = f_str.partition('.') # a为整数部分,b为. ,c为小数部分 c = (c + "0"*n)[:n] #位数不足时补0 return ".".join([a, c])
pymysql查询出的数据为元组
例如:
>>> res = ((1, 'aa'), (2, 'bb'), (3, 'cc')) # 要转化为字典的话 >>> dict(res) {1: 'aa', 2: 'bb', 3: 'cc'}
要交互key,value的话
res = ((1, 'aa'), (2, 'bb'), (3, 'cc')) keys = [] values = [] for i in range(len(res)): keys.append(res[c][0]) values.append(res[c][1]) res_dict = dict(zip(values, keys)) print(res_dict) # 结果为 {'aa': 1, 'bb': 2, 'cc': 3}
copy
直接赋值时,新变量只是前一变量的引用。新变量改变了,前一变量也会改变。
浅拷贝只拷贝父对象,不拷贝子对象。如下offline_json_record的time为父对象,tags为子对象。任意一个变量中的子对象改变了,其他变量中的子对象也会同时改变。
深拷贝完全拷贝了父对象与子对象。变量中的父、子对象改变后,与被拷贝的变量相互不影响。如下offline_json_record,r1,r2相互不影响。
import copy offline_json_record = { "measurement": 'offline_device', "time": '', "tags": { 'region': '' }, "fields": { 'value': 0 } } r1 = copy.deepcopy(offline_json_record) r2 = copy.deepcopy(offline_json_record)
参考:
https://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html
当前年月日
>>> import datetime >>> datetime.datetime.now().year 2020 >>> datetime.datetime.now().month 10 >>> datetime.datetime.now().day 8
参考:
https://www.runoob.com/python/python-date-time.html
https://blog.csdn.net/hanyuyang19940104/article/details/84069720
timestamp与datetime转化
import time import datetime timestamp = time.time() d = datetime.datetime.fromtimestamp(timestamp) d2 = datetime.datetime.now() timestamp2 = time.mktime(d2.timetuple()) # 常用datetime格式化 2020-10-15 11:47:09 d3_str = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
filter返回列表中满足条件的元素
offline_list = list(filter(lambda r: r['status'] == "OFFLINE", all_list)) # 等同于 def is_offline(record): return record['status'] == "OFFLINE" offline_list = list(filter(is_offline, all_list))
python内置函数:
使用session保持登录
import requests
import json
url = "http://xxx.com" hd = { 'Cookie': 'xxxx' } data = {'d1': 'xx', 'd2': "xxx" } # res = requests.post(url, data=data) session = requests.Session() session.headers = hd res = session.post(url, data=data) resp_json = json.loads(res.text)
获取当期日期时间
import datetime # 当期时间 2021-02-18 18:08:32 create_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
list中取出某个键的值
tl_res_obj_list = tl_json_str['data']['list'] # 获取list for index0, item0 in enumerate(tl_res_obj_list): try: item0['xxx'] # 该项才有xxx w[21] = item0['createTime'] # 时间 break except: continue if not w[21]: w[21] = '无'
分页处理
'''处理分页默认每页10条''' total_size = int(json_str['data']['totalSize']) if total_size > 10: total_page = math.ceil(total_size / 10) # 向上取整 2.1 -> 3 for curpage in range(2, total_page + 1): self.get_list_by_curpage(day, curpage=curpage, success_cnt=success_cnt)
随机等待n分钟
minutes = random.uniform(0.5, 21.5) # 生成float随机值 print('等待{}分钟'.format(minutes)) time.sleep(minutes * 60)