1.如何实现python列表去重并保持原有顺序?
li = [1,2,5,1,2,5]
li2 = list(set(li))
print(li2)
2.现有两元祖(('a'),('b')),(('c'),('d')),请使用python匿名函数生成列表[{'a':'c'},{'b':'d'}]
tu1 = (('a'),('b'))
tu2 = (('c'),('d'))
func = lambda x,y:[{x[0]:y[0]},{x[1]:y[1]}]
li = func(tu1,tu2)
print(li)
# func = map(lambda x,y:[{tu1[0]:tu2[0]},{tu1[1]:tu2[1]}])
# print(func)
a = map(lambda x:x**2,range(10))
print(list(a))
3.请给出二分查找的python示列代码。
from timewrap import *
@cal_time
def bisection_method(li,val):
'''二分法'''
start = 0
end = len(li)-1
while start <=end:
mid = (start+end) // 2
if li[mid] < val:
start = mid+1
elif li[mid] > val:
end = mid -1
else:
return mid
else:
return -1
@cal_time
def index_search(li,val):
'''内置索引查找'''
try:
return li.index(val)
except Exception:
return -1
li = list(range(0,10**7))
a=bisection_method(li,10**6+598)
b=index_search(li,10**6+598)
print(a)
print(b)
4.python字符串格式化中,%和format的主要区别是什么?
字符串格式化% 就是C里的printf; format是python 字符串自己的方法, 推荐用format,因为比较灵活
5.*args和**kwags在什么情况下会使用到?请给出使用**kwargs的示列代码
6.线程,进程,协程的区别?
7.GIL是什么,对于python有什么影响?
GIL即全局解释器锁
GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全。
有了GIL的存在,同一时刻同一进程中只有一个线程被执行
8.基于对列实现一个生产者消费者模型,要求:队列内元素不能超过5个,一旦有五个元素了,生产者不再生产,其他内容自由扩散
import queue,threading,time
q = queue.Queue(maxsize= 5)
def producer():
num = 1
while True:
if not q.full():
q.put(num)
print('put',num)
num+=1
def consumer():
while True:
time.sleep(2)
if not q.empty():
print('get',q.get())
t1 = threading.Thread(target=producer)
t2 = threading.Thread(target=consumer)
t1.start()
t2.start()
9.写sql语句,对下面两张表实现处理。
table_A
name kecheng fenshu
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
tabe_B
id name
1 张三
2 李四
3 王五
4 小刘
1.查出每门课程都大于80分的学生姓名
select name from table_A group by name having min(fenshu)>80;
2.查询语文成绩最大的学生姓名
select max(fenshu),name form table_A while kecheng='语文'
10.有表list,共有字段ABC类型都是整数,表中有如下记录:
id A B C
1 2 7 9
2 5 6 4
3 3 11 9
(1)查询出B、C列的值,要求按B列升序排序:
select B,C from list order by B asc
(2)写一条新的纪录,值为 7 8 9
inset info list(A,B,C) values(7,8,9)
(3)查询C列,要求清除重复的值,按降序排列:
select C from list group by C desc