基础题
写一个带参数的闭包
from functools import wraps
def outer(n):
@wraps(n)
def wrapper(func):
def inner(*args, **kwargs):
print("inner")
print(n)
return func(*args, **kwargs)
return inner
return wrapper
@outer("123")
def func():
print("func")
func()
写出结果
def func():
return [lambda x: x * i for i in range(4)]
res = [j(2) for j in func()]
print(res)
def func(a,b=[])这种写法有什么问题吗
def func():
return [lambda x: x * i for i in range(4)]
res = [j(2) for j in func()]
print(res)
写出结果
def func(a, b=[]):
b.append(a)
return b
v1 = func(1)
v2 = func(2, [10, 20])
v3 = func(3)
print(v1, v2, v3)
补零
ip = "192.168.10.1"
for s in ip.split("."):
print(s.zfill(8))
取整
import math
i = 5.5
print(math.floor(i))
print(math.ceil(i))
用两个队列实现一个栈
from queue import Queue
class Q:
def __init__(self):
self.master_queue = Queue()
self.sub_queue = Queue()
def push(self, val):
self.master_queue.put(val)
return self.master_queue
def pop(self):
if self.master_queue.qsize() == 0:
return None
while True:
if self.master_queue.qsize() == 1:
value = self.master_queue.get()
break
self.sub_queue.put(self.master_queue.get())
self.master_queue, self.sub_queue = self.sub_queue, self.master_queue
return value
if __name__ == '__main__':
q = Q()
q.push(1)
q.push(2)
q.push(3)
print(q.pop())
print(q.pop())
print(q.pop())
print(q.pop())
实现一个链表
class Node:
def __init__(self, value, next_node):
self.value = value
self.next_node = next_node
node = Node("head", None)
next_node = node
for i in range(3):
new_node = Node("%s" % i, None)
next_node.next_node = new_node
next_node = new_node
print(node.value)
print(node.next_node.value)
print(node.next_node.next_node.value)
print(node.next_node.next_node.next_node.value)
单链表(实现逆转)
class Node:
def __init__(self, value, next_node, prev_node):
self.value = value
self.next_node = next_node
self.prev_node = prev_node
node = Node("head", None, None)
next_node = node
for i in range(3):
new_node = Node("%s" % i, None, next_node)
next_node.next_node = new_node
next_node = new_node
print(node.value)
print(node.next_node.value)
print(node.next_node.next_node.value)
print(node.next_node.next_node.next_node.value)
print(node.next_node.next_node.next_node.prev_node.value)
print(node.next_node.next_node.next_node.prev_node.prev_node.value)
print(node.next_node.next_node.next_node.prev_node.prev_node.prev_node.value)
双向循环链表
class Node:
def __init__(self, value, next_node, prev_node):
self.value = value
self.next_node = next_node
self.prev_node = prev_node
node = Node("head", None, None)
next_node = node
for i in range(3):
new_node = Node("%s" % i, None, next_node)
next_node.next_node = new_node
next_node = new_node
next_node.next_node = node
node.prev_node = next_node
print(node.value)
print(node.next_node.value)
print(node.next_node.next_node.value)
print(node.next_node.next_node.next_node.value)
print(node.next_node.next_node.next_node.next_node.value)
print(node.next_node.next_node.next_node.next_node.next_node.value)
print(node.next_node.next_node.next_node.next_node.next_node.next_node.value)
print(node.next_node.next_node.next_node.next_node.next_node.next_node.next_node.value)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构