python零碎学习(10)

1.如何对list去重?

  • 先建立一个新的空列表,通过遍历原来的列表,再利用逻辑关系not in 来去重。此方法保证了列表的顺序性
    l=[1,2,3,4,5,1,2,3]
    list=[]
    for i in l:
        if i not in list:
            list.append(i)
    print(list)
    

    输出结果:

  • 将列表转化为集合再转化为列表,利用集合的自动去重功能。简单快速。缺点是:使用set方法无法保证去重后的顺序。
    l=[1,2,3,4,5,1,2,3]
    list=list(set(l))
    list.sort(key=l.index)
    print(list)

    输出结果:

2.写出一个计时器记录方法执行性能的装饰器

import time
from functools import wraps

def timeit(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        start = time.perf_counter()
        ret = func(*args, **kwargs)
        end = time.perf_counter()
        print('used:', end - start)
        return ret
    return wrapper

@timeit
def foo():
    print('in foo()')

foo()

输出结果:

3. Python中yield的用法?

        yield就是保存当前程序执行状态。你用for循环的时候,每次取一个元素的时候就会计算一次。用yield的函数叫generator和iterator一样,它的好处是不用一次计算所有元素,而是用一次算一次,可以节省很多空间,generator每次计算需要上一次计算结果,所以用yield,否则一return,上次计算结果就没了

4.给定两个列表,怎么找出他们相同的元素和不同的元素?

list1=[1,2,3]
list2=[3,4,5]
set1=set(list1)
set2=set(list2)
print(set1&set2)
print(set1^set2)


输出结果:

5.json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?

        dumps函数添加参数ensure_ascii设置为False

import json
a=json.dumps({"ddf":"你好"},ensure_ascii=False)
print(a)

输出结果:

你可能感兴趣的:(学习)