Sunday Blog

人生是一场刻意练习

Python Path 路径

Python Path

os.path from os import path # 拼接路径 p=path.join('/etc','sysconfig','network') # 路径是否存在 print(path.exists(p)) # 分割 (元组: dirname和basename) print(path.split(p)) # 路径和基名 print(path.dirname(p),path.basename(p)) # 当前路径 print(path.abspath(""),path.abspath('.')) # windows print(path.splitdrive('o:/tmp/test')) #windows 文件根目录 p1=path.abspath(__file__) #父文

Python列表解析式和lambda

List Comprehensions And Lambda

列表解析式 [ ] >>> print([i for i in range(10)]) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> print([i for i in range(10) if i%2]) [1, 3, 5, 7, 9] >>> print([i for i in range(10) if i%2 == 1]) [1, 3, 5, 7, 9] >>> print([i for i in range(1,10,2)]) [1, 3, 5, 7, 9] >>> print([i for i in range(20) if i%2==0

Python dict 字典

Python Dict

Dict即Dictionary,也称为mapping. Python中,字典由任意个元素构成的集合,每-个元素称为Item, 也称为Entry。

Python 阶乘

Factorial

0!=1 1!=1 2!=1*2 3!=1*2*3 4!=1*2*3*4 ... for def factorial(n): p=1 for i in range(1,n): p*=i return p print(factorial(5)) 120 for递归 def factorial(n,p=1): if n==1: return p p*=n return factorial(n-1,p) print(factorial(6)) 720 def factorial(n,p=1): return p if n<2 else factorial(n-1,p*n) print(factorial(5)) 公式法 def factorial(n): if n< 2: return n return n*factorial(n-1) print(factorial(5)) 120

Python斐波那契数列

Fibonacci Sequence

斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89… 这个数列从第3项开始,每一项都等于前两项

Python 闭包

Python Closures

闭包 def counter(): c=[0] def inc(): c[0]+=1 return c[0] return inc # 函数对象 foo=counter() print(foo(),foo(),foo()) c=100 print(foo()) 1 2 3 4 return inc() 不可以用(),返回结果,会消亡 counter生成c和inc,消亡,但c inc被foo引

插入排序算法

Insertion Sort

左边为有序区,右边为无序区 从第二个元素跟第一个元素(假定为有序)对比, 如果当前元素大于新元素,将扫描元素移动到下一位 然后向左移位跟左有序区对

Python Datetime 时间函数

Python Datetime

import datetime datestr ='2021-06-10 15:16:08' dt = datetime.datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S') print(type(dt), dt) print(dt.strftime( '%/%m/%d-%H:%M:%S')) # 输出为字符串 print("{:%Y/%m/%d %H:%M:%S}" . format(dt)) # 输出为字符串 <class 'datetime.datetime'> 2021-06-10 15:16:08 /06/10-15:16:08 2021/06/10 15:16:08 import datetime d1=datetime.datetime.now() #无时区时间 print(d1) d2=datetime.datetime.utcnow() #UTC时间 print(d2) d3=datetime.datetime(2018,8,8,10,5,39) print(d3) 2022-08-12 14:29:35.393445 2022-08-12 06:29:35.393494 2018-08-08 10:05:39 时区 # timezone 时

选择排序算法

Selection Sort

每次找到最小元素索引 交换两个索引位置 重复前面的步骤,直到排序完成 def selectSort(nums): length=len(nums) for i in range(length-1): min_idx=i # 假定i为最小值 for j in range(i+1,length): # 第二位与前一位对比 if nums[j] < nums[min_idx]: min_idx=j #得到

242. Leecode 有效的字母异位词

Leecode Valid Anagram

242. 有效的字母异位词 https://leetcode.cn/problems/valid-anagram 难度: 简单 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称

Python dict字典 按key或value 排序

Python Dict Sorted

# sorted默认按key排序 >>> A = {'a':6,'b':4,'c':3} >>> sorted(A) ['a', 'b', 'c'] >>> sorted(A.values()) [3, 4, 6] # sorted按key排序 >>> sorted(A.items(), key=lambda v: v[0]) # sorted按value排序 >>> sorted(A.items(), key=lambda v: v[1]) [('c', 3), ('b',

Python 杨辉三角

Python Yanghui Triangle

解法1: 前后补1,计算中间值占位数 创建triangle列表,制定前2行数据,方便下列计算 第3行开始,pre_row记录第2行值 cur_row

Python 练习题

Python Exercise

解决猴子吃桃问题 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上

Python Set 集合

Python Set

集合Set Python中,它是可变的、无序的、不重复的元素的集合 初始化 set( ) set(iterable) s1=set( ) s2=set(range(5)) s3=set([1,2,3]) s4=set('abcd') 注意: s5={ } #是字典不是集合 s6={1,2,3} s7={1,(1,)} s8=(1,(1,),[1]} #报错 元素性质 去重:在

Python魔术方法 运算符重载

Python Operator Overloading

运算符重载意味着赋予超出其预定义的操作含义的扩展含义。例如运算符 + 用于添加两个整数以及连接两个字符串和合并两个列表。这是可以实现的,因为 ‘+’ 运