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内置函数:

https://blog.csdn.net/weixin_30332241/article/details/97496902?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduend~default-1-97496902.nonecase&utm_term=python%E6%80%8E%E4%B9%88%E8%A1%A8%E7%A4%BA10%E7%9A%84n%E6%AC%A1%E6%96%B9&spm=1000.2123.3001.4430

 

 

使用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)

 

posted @ 2020-10-08 17:05  Virya  阅读(218)  评论(0编辑  收藏  举报