美文网首页
python3-基础练习Demo

python3-基础练习Demo

作者: caokai001 | 来源:发表于2019-08-26 20:58 被阅读0次

Demo-1

  • 有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
  • 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
L=[11,22,33,44,55,66,77,88,99,90]
{"k1":list(filter(lambda x:x>66,L)),"k2":list(filter(lambda x:x<66,L))}

Demo-2

  • 查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素。
li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", "aric", "Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"}
from typing import Iterable,List,Tuple,Dict
import logging
li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", " aric", "Alex", "Tony", "rain")
dic = {'k1': "alex", 'k2': ' aric', "k3": "Alex", "k4": "Tony"}

def remove_strip(x:Iterable):
    '''
    input different data structure
    '''
    if isinstance(x,List):
        return list(map(str.strip,li))
    elif isinstance(x,Tuple):
        return tuple(map(str.strip,li))
    elif isinstance(x,Dict):
        return dict(map(str.strip,li))
    else:
        logging.warning("notice input data structure")


def p(x:Iterable):
    return list(filter(lambda item:item.endswith('c') and item.capitalize().startswith('A'),x))

def main(x:Iterable):
    if isinstance(x,Dict):
        return p(x.values())
    else:
        return p(x)
if __name__=="__main__":
    print(main(li))
    print(remove_strip(li))

Demo-3

  • 输出商品列表,用户输入序号,显示用户选中的商品
li = ["手机", "电脑", '鼠标垫', '游艇']
li = ["手机", "电脑", '鼠标垫', '游艇']
for index, text in enumerate(li,1):
    print(index, text)

inp = input("请选择要购买的商品:")
inp_num = int(inp)
print(li[inp_num-1])

Demo-10

  • 写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
f=lambda i:True if i == None or i.isspace() == True or i == '' else False
if any(map(f,li))==True:
    print("有空内容")

Demo-9

  • 写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5
def is_length(obj):
    obj_len = 0
    for i in obj:
        obj_len += 1
    if obj_len > 5:
        print(obj, "长度大于5")
    else:
        print(obj, "长度为", obj_len)

Demo-22

  • python日志模块
import logging

logging.basicConfig(
    #filename="base.log",
    format="[%(lineno)d]%(asctime)s - %(pathname)s - %(levelname)-8s - %(module)s : %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
    level=logging.DEBUG
)

logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')
logging.log(10, 'log')

Demo-19

  • 实现命令行进度条,带百分比
import sys
import time

for i in range(101):
    # 清除屏幕
    sys.stdout.write("\r")

    # 显示百分比和进度条
    sys.stdout.write("[%s%%|%-100s]" % (i, i * ('█')))

    # 从缓存刷入到屏幕
    sys.stdout.flush()

    # 延时0.3秒
    time.sleep(0.3)

Demo-16

  • 实现多层装饰器及任意传参
import time
def decorator_2(func):
    """
    最外层装饰器
    :param func:
    :return:
    """
    def warp(*args, **kwargs):
        print("最外层装饰器1".center(20, "="))
        ret = func(*args, **kwargs)
        print("最外层装饰器2".center(20, "="))
        return ret

    return warp
@decorator_2
def s(x:int)->int:
    '''
    :param x : number
    :return :
    '''
    return x*2

print(s(5))

#Demo-14
import random

code = ""
for i in range(4):

    num = random.randrange(0, 2)

    # 当前位显示字母或者数字各有50%几率
    if num == 0:
        # 随机显示数字
        r1 = random.randrange(0, 10)
        code += str(r1)
    else:
        # 随机显示字母
        i = random.randrange(65, 91)
        c = chr(i)
        code += c

print(code)

Demo-24 并行运行

并行实例

  • import joblib
  • Parallel(n_job=4,backend="multiprocess")(delayed(function)(*args) for i,j in iteratable)
Parallel(n_jobs=4,backend="threading")(delayed(f_compute) (j) for j in range(5))
Parallel(n_jobs=30)(delayed(mapping)(sample, fqs, ref, 2)
                        for sample, fqs in data.items())
import psutil
from math import sqrt
%timeit [sqrt(i ** 2) for i in range(1000)]

#
print("CPU number :{}".format(psutil.cpu_count()))
from joblib import Parallel, delayed
%timeit Parallel(n_jobs=2)(delayed(sqrt)(i ** 2) for i in range(1000))
计算时间比较
  • 计算密集型任务适合多进程,IO 密集型任务适合多线程
  • 计算密集型任务中速度:多进程 > 单进程/线程 > 多线程, IO 密集型任务速度: 多线程 > 多进程 > 单进程/线程。
def f_IO(a):  # IO 密集型
    time.sleep(5)

def f_compute(a):  # 计算密集型
    for _ in range(int(1e7)):
        math.sin(40) + math.cos(40)
    return


def joblib_process(sub_f):
    with parallel_backend("multiprocessing", n_jobs=6):
        res = Parallel()(delayed(sub_f)(j) for j in range(6))
    return


def joblib_thread(sub_f):
    with parallel_backend('threading', n_jobs=6):
        res = Parallel()(delayed(sub_f)(j) for j in range(6))
    return

def showtime(f, sub_f, name):
    start_time = time.time()
    f(sub_f)
    print("{} time: {:.4f}s".format(name, time.time() - start_time))
   
sub_f = f_compute
showtime(joblib_process, sub_f, "joblib multiprocess")
showtime(joblib_thread, sub_f, "joblib thread")

相关文章

网友评论

      本文标题:python3-基础练习Demo

      本文链接:https://www.haomeiwen.com/subject/pzfjectx.html