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)
输出结果: