python
python系列
雁宇up
成为优秀的算法工程师
展开
-
【python基础 - 07】multiprocessing quick start
multiprocessing 是 python 中常用的多进程库,话不多说来看示例。# -*- coding: utf-8 -*-'''@Time : 2021/8/26@Author : Yanyuxiang@Email : yanyuxiangtoday@163.com@FileName: quick_start.py@Software: PyCharm'''from multiprocessing import Processimport osdef info原创 2021-12-23 21:37:02 · 1108 阅读 · 0 评论 -
【python基础 - 06】timeit quick start
timeit 是一个常见的用于评测代码执行时间的库,有助于用其评测代码的性能。话不多说,直接来看示例。这个示例是判断有序数组中用循环的方法查找一个目标数字和用二分查找目标数字的耗时对比。下面示例中的 bisect 使用方法可以参照这个链接。# -*- coding: utf-8 -*-'''@Time : 2021/12/20@Author : Yanyuxiang@Email : yanyuxiangtoday@163.com@FileName: quick_start_time原创 2021-12-20 23:09:30 · 1223 阅读 · 0 评论 -
【通过算法题学习python技巧 - 12】leetcode 35. 搜索插入位置
本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。leetcode 35. 搜索插入位置题目链接给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入原创 2021-12-19 10:08:16 · 1387 阅读 · 0 评论 -
【python基础 - 05】__all__
__all__通常用于项目中的引用保护。定义aa.py文件如下:def a1(): print('a1 from aa.py')def a2(): print('a2 from aa.py')定义bb.py文件如下:from aa import *a1()a2()执行bb.py,得到输出:a1 from aa.pya2 from aa.py将aa.py修改为__all__ = ['a1']def a1(): print('a1 from a原创 2021-10-25 11:49:10 · 1110 阅读 · 0 评论 -
【python基础 - 04】__getattr__
__getattr__方法常用于以属性的方式调用类中的属性或方法,如MyClass.my_func().定义Test类如下:class Test(object): def _my_default(self, *args): print(f'func input {args}') def __getattr__(self, key): print(f'{key} not defined in Test') return self._my_d原创 2021-10-25 11:34:55 · 1439 阅读 · 0 评论 -
【python基础 - 03】__getitem__
__getitem__方法是一种常见的方法,常用于获取类中的某些信息。以dict的情况举例,定义Test类如下:class Test(object): def __init__(self): self.dict = dict( m_key='m_value' ) def __getitem__(self, key): return self.dict[key]执行x = Test()print(x['m_k原创 2021-10-25 11:25:05 · 489 阅读 · 0 评论 -
【python基础 - 02】__len__
__len__方法是一种常见的方法,顾名思义,主要用于判断某个类的长度。定义Test类如下:class Test(object): def __init__(self): self.num_list = [1, 2, 3] def __len__(self): return len(self.num_list)执行x = Test()# 下面两行等价print(len(x.num_list))print(x.__len__())输出原创 2021-10-25 11:20:30 · 454 阅读 · 0 评论 -
【python基础 - 01】__call__
__call__方法是一种常见的方法,顾名思义,主要用于调用某个类。定义Test类如下:class Test(object): def __call__(self, any=None): print(any)执行x = Test()# 下面三行等价Test()()x.__call__()x()print()# 下面三行等价Test()('hello')x.__call__('hello')x('hello')输出NoneNoneNone原创 2021-10-25 11:13:28 · 191 阅读 · 0 评论 -
【通过算法题学习python技巧 - 11】剑指 Offer 39. 数组中出现次数超过一半的数字
本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 39. 数组中出现次数超过一半的数字题目链接数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2collections 是一个经常能用到的包。class Solution: def majorityElement(self, nums:原创 2021-10-23 09:54:43 · 180 阅读 · 0 评论 -
【通过算法题学习python技巧 - 10】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 21. 调整数组顺序使奇数位于偶数前面题目链接输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。列表递推表达式一行写完是不是很酷。class Solution: def exchange(self, nu原创 2021-10-16 14:39:22 · 249 阅读 · 0 评论 -
【通过算法题学习python技巧 - 09】剑指 Offer 20. 表示数值的字符串
本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 20. 表示数值的字符串题目链接请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。数值(按顺序)可以分成以下几个部分:若干空格一个 小数 或者 整数(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数若干空格小数(按顺序)可以分成以下几个部分:(可选)一个符号字符(’+’ 或 ‘-’)下述格式之一:至少一原创 2021-09-22 20:11:20 · 211 阅读 · 0 评论 -
【通过算法题学习python技巧 - 08】剑指 Offer 19. 正则表达式匹配
本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 19. 正则表达式匹配题目链接请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配原创 2021-09-21 08:58:07 · 207 阅读 · 0 评论 -
【通过算法题学习python技巧 - 07】剑指 Offer 17. 打印从1到最大的n位数
本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 17. 打印从1到最大的n位数题目链接输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]善用range。class Solution: def printNumbers(self, n: int) -> List[int]:原创 2021-09-20 20:12:45 · 246 阅读 · 0 评论 -
【通过算法题学习python技巧 - 06】剑指 Offer 15. 二进制中1的个数
本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 15. 二进制中1的个数题目链接编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用原创 2021-09-19 11:43:37 · 233 阅读 · 0 评论 -
【通过算法题学习python技巧 - 05】剑指 Offer 10- I. 斐波那契数列
本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 10- I. 斐波那契数列题目链接写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(100原创 2021-09-18 09:28:20 · 289 阅读 · 0 评论 -
【通过算法题学习python技巧 - 04】剑指 Offer 06. 从尾到头打印链表
本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 06. 从尾到头打印链表题目链接输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]reverse可以实现列表反转。class Solution: def reversePrint(self, head: ListNode) -> List[int]: res = [] whi原创 2021-09-17 08:42:18 · 281 阅读 · 0 评论 -
【通过算法题学习python技巧 - 03】剑指 Offer 05. 替换空格
本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 05. 替换空格题目链接请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”class Solution: def replaceSpace(self, s: str) -> str: return s.replace(' ', '%20')博主会持续更新一些人原创 2021-09-16 08:18:02 · 296 阅读 · 0 评论 -
【通过算法题学习python技巧 - 02】剑指 Offer 04. 二维数组中的查找
本专栏的目的是通过算法题学习python库,而非实现算法题的最优解。剑指offer 03. 数组中重复的数字题目链接在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14,原创 2021-09-15 08:25:01 · 358 阅读 · 0 评论 -
【通过算法题学习python技巧 - 01】剑指offer 03. 数组中重复的数字
在日常工作中,经常会遇到算法问题,与为了找工作而刷算法不同,一个高效的开发者会让自己少写代码。本专栏就是用python库去解决日常遇到的算法问题。剑指offer 03. 数组中重复的数字题目链接找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3class S原创 2021-09-12 12:31:48 · 412 阅读 · 0 评论