python之手撕代码

该博客通过一系列实例深入探讨Python编程,包括装饰器、文件路径操作、数组下标求和、线程安全与互斥锁的实现,以及多种排序算法的详细解析,旨在提升读者的代码熟练度和理解力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

书读百遍,其意自见,代码亦如是,无他,唯熟练尔。

装饰器之代码运行时间

  1 # coding=utf8
  2 # 使用装饰器实现统计一段代码的运行时间
  3 
  4 import time
  5 
  6 def w(func):
  7     def inner():
  8         s = time.time()
  9         func()
 10         e = time.time()
 11         t = e-s
 12         print('运行时间为%f'%t)
 13     return inner()
 14 
 15 @w
 16 def f1():
 17     n = 0
 18     for i in range(101):
 19         n += i
 20     print(n)

运行结果

5050
运行时间为0.000068

文件路径

  1 # coding=utf8
  2 # 根据路径打印出路径下的文件夹以及文件的路径与名称
  3 import os
  4 
  5 def f1(p):
  6     fs = os.listdir(p)
  7     for f in fs:
  8         temp_path = os.path.join(p,f)
  9         if not os.path.isdir(temp_path):
 10             print('文件:%s'%temp_path)
 11         else:
 12             print('文件夹:%s'%temp_path)
 13             f1(temp_path)
 14 
 15 path = '/home/python/Desktop/test'
 16 f1(path)

运行结果

文件夹:/home/python/Desktop/test/03
文件:/home/python/Desktop/test/03/c.txt
文件:/home/python/Desktop/test/z.txt
文件夹:/home/python/Desktop/test/01
文件:/home/python/Desktop/test/01/a.txt
文件夹:/home/python/Desktop/test/02
文件:/home/python/Desktop/test/02/b.txt

两数之和之下标

  1 # coding=utf8
  2 # 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同
    样的元素不能被重复利用。
  3 
  4 # 求差值、把差值存进字典里作为键、索引作为值,第一次循环理解:d[7]=0 即字典d={7:0},表示为索引0需要数组里值为7的元素配对。 if 判断是否为前面元素所需要配对的值 , 是则返回两个索引值。(补充:nums[x] in d是判断值是否在字典某个key里面)
  5 
  6 def f1():
  7     l = [2,7,13,16]
  8     t = 9
  9     n = len(l)
 10     d = {
   
   }
 11     for x in range(n):
 12         # 差值
 13         a = t-l[x]
 14         # 如果有需要我作为差值的元素
 15         if l[x] in d:
 16             # 返回需要我的元素的下标,我的下标
 17             return d[l[x]],x
 18         else:
 19             # 否则,把我需要的差值和我的下标作为键值对存进去
 20             d[a]=x
 21 
 22 ret 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值