python的算法入门/通关/手册
- 前言:
- 算法通关手册(LeetCode)-github
- Hello 算法:
- python数据结构和算法 - 中文版
- The Algorithms - Python
- 最后
- 刷题思维:
- python-leetcode刷题常用语法:
- 变量定义:
- 逻辑与或非和按位与或非异或
- 逻辑运算:
- 按位运算
- 基本语法
- 常用函数
- 高级语法
- 常用循环及判断语句
前言:
因为笔者马上要去面试了,正在刷leetcode,同时准备着与leetcode相关的python知识点。所以这里找到了几个github上几个相关的python - leetcode知识点帖子:
算法通关手册(LeetCode)-github
算法通关手册(LeetCode)
算法通关手册电子书地址
作者介绍:
我是一名 iOS / macOS 的开发程序员,另外也是北航软院的一名非全硕士(在读)。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。
我从 2021 年 03 月 30 日开始每日在 LeetCode 刷题,到 2022 年 06 月 08 日已经刷了 1000+ 道题目,并且完成了 800+ 道题解。努力向着 1000+、1500+、2000+ 道题解前进。
Hello 算法:
Hello 算法官网
- 本项目旨在打造一本开源免费、新手友好的数据结构与算法入门教程。
- 全书采用动画图解,内容清晰易懂、学习曲线平滑,引导初学者探索数据结构与算法的知识地图。
- 源代码可一键运行,帮助读者在练习中提升编程技能,了解算法工作原理和数据结构底层实现。
- 鼓励读者互助学习,提问与评论通常可在两日内得到回复。
python数据结构和算法 - 中文版
通过python解决算法和数据结构问题
The Algorithms - Python
几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万。这个项目主要包括两部分内容:一是各种算法的基本原理讲解,二是各种算法的代码实现。
传送门:https://github.com/TheAlgorithms/Python?tab=readme-ov-file
最后
其实主要就是介绍上面两个和python相关的算法帖子。剩下的自己还找了一些中文python知识点帖子以便刷题自用:
Python学习笔记
【Python 和 LeetCode 】Python 基础|LeetCode 算法知识点总结 | 刷LeetCode笔记 | 整理中。。。
LeetCode刷题必知的Python知识
Python 必知必会知识点
python基础语法——常量、变量、注释、输入输出和运算符
python教程
刷题思维:
- 理解题意(经验与知识),单步运行(测试提供的样例),抽象化(类似于用公式解决一类题)
- 编程(对所用语言及API的理解,各种语言的基础知识点)
- 测试、边界情况:边界输入输出,数组有没有越界,死循环,资源释放
- 优化:方向(运行很慢的原因是什么?是算法?抽象还是别的什么)
python-leetcode刷题常用语法:
变量定义:
-
整数(Integer):
age = 30
-
浮点数(Float):
pi = 3.14
-
字符串(String):
empty_string = str() empty_string = "" name = "Alice"
-
布尔值(Boolean):
is_student = True
-
列表(List):
empty_list = list() empty_list = [] fruits = ["apple", "banana", "cherry"]
-
元组(Tuple):
empty_tuple = tuple() empty_tuple = () coordinates = (10.0, 20.0)
-
字典(Dictionary):
empty_dict = dict() empty_dict = {} person = {"name": "Alice", "age": 30}
-
集合(Set):
empty_set = set() unique_numbers = {1, 2, 3}
-
空值(None):
value = None
逻辑与或非和按位与或非异或
在Python中,&
和 |
和^
用于按位运算
,而不是逻辑运算
。要进行逻辑操作,你必须使用 and
、or
和 not
。
逻辑运算:
-
与 (
and
):a = True b = False result = a and b # 结果是False
-
或 (
or
):a = True b = False result = a or b # 结果是True
-
非 (
not
):a = True result = not a # 结果是False
按位运算
- 按位与操作 (
&
):result = a & b
按位与操作对每一对相应的位执行与操作。
a = 5 # 二进制:0101
b = 3 # 二进制:0011
result = a & b # 结果是1,二进制:0001
print(result) # 输出:1
- 按位或操作 (
|
) :result = a | b
按位或操作对每一对相应的位执行或操作。
a = 5 # 二进制:0101
b = 3 # 二进制:0011
result = a | b # 结果是7,二进制:0111
print(result) # 输出:7
- 按位非操作 (
~
):result = ~a
按位非操作对每一个位取反。
a = 5 # 二进制:0101
result = ~a # 结果是-6,二进制表示为:...11111010(在Python中,按位非会取反并加1)
print(result) # 输出:-6
- 按位异或操作 (
^
):result = a ^ b
按位异或操作对每一对相应的位执行异或操作。
a = 5 # 二进制:0101
b = 3 # 二进制:0011
result = a ^ b # 结果是6,二进制:0110
print(result) # 输出:6
基本语法
- 变量与数据类型
- 整数、浮点数、字符串、列表、字典、集合、元组等。
- 列表操作
- 创建:
lst = [1, 2, 3]
- 添加元素:
lst.append(4)
- 插入元素:
lst.insert(1, 10)
- 删除元素:
lst.remove(2)
或del lst[1]
- 切片:
sublist = lst[1:3]
- 创建:
- 字典操作
- 创建:
d = {'a': 1, 'b': 2}
- 添加/更新:
d['c'] = 3
- 删除:
del d['a']
- 遍历:
for key, value in d.items():
- 创建:
- 集合操作
- 创建:
s = {1, 2, 3}
- 添加:
s.add(4)
- 删除:
s.remove(2)
- 创建:
- 条件与循环
- 条件:
if
,elif
,else
- 循环:
for
,while
- 条件:
常用函数
- 内置函数
len()
: 获取长度sum()
: 求和max()
,min()
: 最大值和最小值sorted()
: 排序reversed()
: 反转
- 列表推导式
squares = [x**2 for x in range(10)]
- 枚举与迭代
enumerate()
: 获取索引和值zip()
: 并行迭代
- 字符串操作
- 分割:
s.split()
- 拼接:
' '.join(lst)
- 替换:
s.replace('a', 'b')
- 分割:
- 数学与算法
math
模块:math.sqrt()
,math.factorial()
collections
模块:Counter
,defaultdict
itertools
模块:permutations
,combinations
- 变量交换值:
x, y = y, x
高级语法
- 变量定义
# 直接声明变量 x = 5 name = "Alice" x = None # 初始声明为None x = 10 # 之后再赋值 name: str = "Alice" age: int = 25 a, b, c = 1, 2, 3 # 同时声明多个变量
- 函数定义
def my_function(x): return x + 1
- Lambda 表达式
add = lambda x, y: x + y
- 异常处理
try: # 代码块 except Exception as e: print(e)
- 类与对象
class MyClass: def __init__(self, value): self.value = value
- 返回多个类型的值:
def get_multiple_values(): num = 42 text = "Hello" lst = [1, 2, 3] return num, text, lst number, message, list_values = get_multiple_values() print(number) # 输出:42 print(message) # 输出:"Hello" print(list_values) # 输出:[1, 2, 3]
常用循环及判断语句
- If-Else :
if elif else
x = 10 if x > 5: print("x is greater than 5") elif x == 5: print("x is 5") else: print("x is less than 5")
- For Loop
# 遍历列表 numbers = [1, 2, 3, 4, 5] for num in numbers: print(num) # 遍历字典 dictionary = {'a': 1, 'b': 2} for key, value in dictionary.items(): print(f"{key}: {value}") # 使用 range for i in range(5): print(i)
- While Loop
count = 0 while count < 5: print(count) count += 1
- 嵌套循环
matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] for row in matrix: for value in row: print(value)
- 简洁的if条件表达式
x = 10 result = "greater than 5" if x > 5 else "5 or less"
- 生成列表的简洁方式:
# 创建一个包含1到10的平方的列表 squares = [x**2 for x in range(1, 11)]
- 使用
break
和continue
-
break
:用于提前退出循环。 -
continue
:跳过当前迭代,继续下一次循环。for num in range(10): if num == 5: break # 提前退出循环 if num % 2 == 0: continue # 跳过偶数 print(num)