
python杂学
lxx199603
正在学习数据科学
展开
-
leetcode 多数元素
给定一个大小为n的数组,找到出现次数大于⌊n/2⌋的元素,称之为“多数元素”。假设数组是非空的,且多数元素存在。方法一:遍历寻找简单粗暴。去重,遍历每个元素,统计其出现的次数,如果大于⌊n/2⌋,将其返回。# 方法一:遍历def maj1(ls): for i in set(ls): if ls.count(i) > len(ls)/2: return i方法二:统计频数出现次数大于⌊n/2⌋次的多数元素,一定是数组中出现次数最原创 2020-08-19 08:55:53 · 259 阅读 · 0 评论 -
比较冒泡、插入、快速的运行效率
# 冒泡排序def bubble(ls): length = len(ls) while length>1: for i in range(length-1): if ls[i]>ls[i+1]: ls[i],ls[i+1] = ls[i+1],ls[i] length -= 1 return ls# 插入排序def myinsert(ls): for i in r.原创 2020-08-14 16:24:56 · 177 阅读 · 0 评论 -
python map()函数基本用法
今天我们来解决3个具体问题。问题1:用户输入一行数字,数字之间用空格隔开,如何接收这些数字并转换为列表。# 接收一组数字,方法1ls = []for i in input().split(): ls.append(eval(i))print(ls)其实,还有一种更优雅的方法。# 接受一组数字,方法2ls = list(map(eval, input().split()))print(ls)这里就要隆重介绍我们今天的主角——map()函数!map(function,原创 2020-08-13 15:24:01 · 3339 阅读 · 0 评论 -
python生成器
带有yield关键字的函数被称为生成器(generator)。生成器的适用场景如下:列表元素可以按照某种算法推算出来,用数学的话讲就是——已知数列的通项公式或递推公式。 列表元素数量庞大,可能有上百万个,甚至无穷个。 仅仅需要访问列表中前几个元素,后面绝大多数元素占用的空间都是一种浪费。先举个简单的例子。ls = [2*x for x in range(1,11)] # 列表ge = (2*x for x in range(1,11)) # 生成器print(ls)print(ge)原创 2020-08-12 11:16:29 · 269 阅读 · 0 评论 -
验证回文串 总结
提一个非常简单的问题:如何验证回文串。最先想到的是,把字符串反转,然后和原字符串比较。那么顺势总结一下字符串反转的方法。有的小伙伴可能会想到reverse()方法。但要注意,reverse()是列表才有的方法,用于字符串会报错。当然,把字符串转换成列表就可以:ls = list(mystr)ls.reverse()mystr1 = ''.join(ls)不过,这又是何必呢。内置函数reversed()可以用于各种序列,包括元组、列表、字符串、range等。要注意的是,它返回的是迭代器。原创 2020-08-02 17:51:22 · 312 阅读 · 0 评论 -
python生成《平安经》——zip()函数用法
选一个容易的来操作——各年龄平安。话不多说,直接上代码:print("初生平安,满月平安,百天平安,",end='')for i in zip([str(x) for x in range(1,101)],["岁平安"]*100): print(i[0]+i[1],end=',')print('\b。')相信大家对这段代码的含义理解起来并不难。本文着重介绍一下zip()函数。zip()函数的参数是两个或多个可迭代对象,它能将对象中对应的元素打包成一个个元组,然后返回由这些元组组成原创 2020-07-31 21:47:30 · 410 阅读 · 0 评论 -
python 字符串保留特定字符 全面总结
leetcode上有一道很简单的题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,忽略字母的大小写。将题目拆解成两部分:第一,处理字符串,使其只保留字母和数字,且字母统一大小写;第二,验证回文串。本文先来讲讲第一部分。改变字母大小写很简单,用内置函数即可。重点在于只保留字母和数字字符。我首先想到的是正则。对于正则,我并不是很会。难者不会,会者不难,我觉得它太难了,完全不适合我这种又懒又笨的猪脑子,向来是现用现查。这一查,就查出两种方法。算上不用正则的,总计3种方原创 2020-07-26 00:08:50 · 5571 阅读 · 0 评论 -
Python 字符串只保留某一种字符
正则是个好东西。re里面的功能太多太杂,为了简单方便,统一只记一个函数:findall()import remystr = "hahaAAA哈哈123./!#"str1 = ''.join(re.findall('[\u4e00-\u9fa5]',mystr)) # 只保留汉字print(str1)str2 = ''.join(re.findall('[a-z]',mystr)) # 只保留小写字母print(str2)str3 = ''.join(re.findall('[0原创 2020-07-15 11:18:07 · 2596 阅读 · 0 评论 -
python 随便玩玩系列2:逻辑运算符
时隔半年重温python基础教程,发现了以前没注意过的事情。a and b,and是逻辑运算符与,如果a和b都为True,结果返回True,否则返回False。问题来了,如何自己写代码实现“与”?即实现判断a and b是true还是false,要求不能使用编程语言自带的逻辑运算符(何苦自己为难自己……)我首先想到的:如果a是false,那么大局已定,直接返回false;如果a不是false,那么认为a是true,接着看b;(只能说认为a是true,其实python里true的值为1)原创 2020-07-03 15:10:35 · 355 阅读 · 0 评论 -
绘制词云图
当个技术宅其实挺难的,我代码能力太弱了。需要放在工作路径下的文件有:中文字体文件、背景图片、停用词、语料。导入需要的库:import csvimport re, jieba# 词云生成工具from wordcloud import WordCloud,ImageColorGenerator# 对中文进行处理import matplotlib.font_manager as ...原创 2019-12-10 15:16:55 · 467 阅读 · 0 评论 -
leetcode 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0链接:ht...原创 2019-09-02 11:25:55 · 145 阅读 · 0 评论 -
leetcode 实现strStr()
给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle = "bba"输出: -1说明:...原创 2019-08-30 11:44:01 · 120 阅读 · 0 评论 -
算法题 连续整数之和
找出所有连续整数之和为n的情况。def getls(n): minval = 1 maxval = 1 sumval = 1 while minval<(n/2+1): if sumval == n: for i in range(minval,maxval+1): pri...原创 2019-08-30 11:10:35 · 309 阅读 · 1 评论 -
leetcode 移除元素
给定一个数组 nums和一个值 val,原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素...原创 2019-08-29 11:30:13 · 148 阅读 · 0 评论 -
leetcode x的平方根
实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去链接:https://leetcode-cn.com/problems/...原创 2019-09-22 20:25:07 · 185 阅读 · 0 评论 -
数据结构 快速排序
class SortableArray: def __init__(self,array): self.array = array def mypartition(self,lp,rp): pivot_position = rp rp -= 1 pivot = self.array[pivot_positi...转载 2019-08-28 15:49:46 · 120 阅读 · 0 评论 -
leetcode 合并两个有序数组
给定两个有序整数数组nums1 和 nums2,将 nums2 合并到nums1中,使得num1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n。假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,...原创 2019-09-03 11:07:01 · 153 阅读 · 0 评论 -
leetcode 报数
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211被读作"one 1"("一个一") , 即11。11 被读作"two 1s"("两个一"), 即21。21 被读作"one 2", "one 1"("一个二","一个一...原创 2019-09-04 11:16:16 · 124 阅读 · 0 评论 -
python 列表统计元素频数、频率
一个很简单的问题:统计列表中元素出现个数、比例。想了以下4种解决方案。我感觉pandas应该是最快的,不过在不能调用第三方库的情况下,可以试试前面几种哪个快些。list.count()ls = ['a','a','a','b','b','c']countDict = dict()proportitionDict = dict()for i in set(ls): c...原创 2019-09-05 15:07:37 · 26592 阅读 · 0 评论 -
leetcode 最大子序和
给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6链接:https://leetcode-cn.com/problems/maximum-subarray动态规划没学过。就我这个智商,基本上就告别...原创 2019-09-06 11:13:15 · 124 阅读 · 0 评论 -
leetcode 加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。可以假设除了整数 0 之外,这个整数不会以零开头。示例:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123链接:https://leetcode-cn.com/problems/plus-oneclass Soluti...原创 2019-09-12 15:31:05 · 109 阅读 · 0 评论 -
leetcode 爬楼梯
假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶...原创 2019-09-23 10:10:01 · 131 阅读 · 0 评论 -
leetcode 买卖股票的最佳时机
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...转载 2019-09-27 14:38:20 · 119 阅读 · 0 评论 -
leetcode 两数之和
我决定以博客的形式记录自己的刷题历程。给定一个整数数组 nums和一个目标值 target,请在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返...原创 2019-08-05 17:13:48 · 88 阅读 · 0 评论 -
leetcode 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例2:给...原创 2019-08-28 11:28:00 · 99 阅读 · 0 评论 -
leetcode 有效的括号
给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输...原创 2019-08-27 15:41:13 · 112 阅读 · 0 评论 -
数据结构 冒泡排序
# 冒泡排序def mybubble(ls): flag = True times = 0 while flag: flag = False for i in range(len(ls)-times-1): # 只要遍历没排序的元素 if ls[i]>ls[i+1]: ls[i...原创 2019-08-13 20:43:38 · 203 阅读 · 0 评论 -
数据结构 有序数组二分查找
查找:检查数组中是否存在某个值,如果存在,返回其索引。ls = [10,22,43,55]ls.index(22)不用内置函数,手动实现二分查找。要求输入的列表是从小到大排好序的。def binarysearch(ls, val): #ls.sort() lower = 0 upper = len(ls)-1 while lower&l...原创 2019-08-09 11:44:17 · 143 阅读 · 0 评论 -
leetcode 找到字符串中所有字母异位词
给定一个字符串s和一个非空字符串p,找到s中所有是p的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串s和 p的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例1:输入:s: "cbaebabacd" p: "abc"输出:[0, 6]解释:起始索引等于 0 的...原创 2019-08-13 14:30:42 · 186 阅读 · 0 评论 -
leetcode 第三大的数
这道题我没有去追求特别高深的解法了。给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。示例 1:输入: [3, 2, 1]输出: 1解释: 第三大的数是 1.示例 2:输入: [1, 2]输出: 2解释: 第三大的数不存在, 所以返回最大的数 2 .示例 3:输入: [2, 2, 3, 1]输出...原创 2019-08-08 17:31:44 · 159 阅读 · 0 评论 -
Python 字符串只保留汉字
借鉴了https://blog.youkuaiyun.com/u012155582/article/details/78587394这里使用Python3def is_chinese(uchar): if uchar >= '\u4e00' and uchar <= '\u9fa5': return True else: return F...原创 2019-08-08 17:25:17 · 5092 阅读 · 1 评论 -
数据预处理总结1.5
问题:如何批量替换数据中的某个值?sklearn中有一个类原本是专门用来填补缺失值的,不过这一功能用pandas的fillna()更简单,所以这个类被我用作替换值的技巧来使用。import pandas as pdfrom sklearn.impute import SimpleImputerdf = pd.DataFrame([[2,'aa'],[3,'ss'],[33,'not...原创 2019-06-26 10:37:50 · 150 阅读 · 0 评论 -
Python 随便玩玩 系列1
四个数字:1、2、3、4,能组成的所有互不相同且无重复数字的三位数法一:ls = [1,2,3,4]for i in ls: for j in ls: for r in ls: if i!=j and j!=r and i!=r: print(i,j,r)法二:import itertoolsl...原创 2019-05-21 19:38:33 · 117 阅读 · 0 评论 -
Python笔记04:Numpy向量
吴恩达大佬在深度学习课程里讲的很多Python技巧还是很受用的。有的看似是向量的东西其实不是向量,而是一种秩为1的奇怪的东西:import numpy as npaa=np.array([1,2,3])print(aa)print(aa.shape)print(aa.T)print(aa.T.shape)print(np.dot(aa,aa.T))print(np....原创 2019-03-24 11:12:52 · 670 阅读 · 0 评论 -
Python笔记03:去除具有包含关系的字符串
需求:一个列表中有若干字符串,要把其中包含其他字符串的元素去掉,只保留被包含的最短的字符串。比如,["aa","aab","xaa","bu","xxxa","bu1","xxxa"],只保留"aa", "bu", "xxxa"。ls1=["aa","aab",原创 2019-01-04 15:22:17 · 1010 阅读 · 0 评论 -
Python笔记01:Counter计数
看Counter之前先复习一下字典的操作:# 定义字典dict1={'a':1}# 新增键值对dict1['b']=2# 修改值dict1['a']=3 输出:{'a': 1}{'a': 1, 'b': 2}{'a': 3, 'b': 2}计数器生成的结果跟字典是一个道理。from collections import CounterCount...原创 2018-09-29 15:57:28 · 403 阅读 · 0 评论 -
leetcode 最长回文串
这道题相对简单,两版代码有细微差别,思想不变,时间复杂度不变。给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。请注意区分大小写。比如"Aa"不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 :输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7链接:https...原创 2019-08-07 11:07:42 · 96 阅读 · 0 评论 -
leetcode Fizz Buzz
输出从 1 到 n 数字的字符串表示。1. 如果n是3的倍数,输出“Fizz”;2. 如果n是5的倍数,输出“Buzz”;3.如果n同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15返回:[ "1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "...原创 2019-08-07 15:03:18 · 192 阅读 · 0 评论 -
leetcode 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。链接:https://leetcode-cn.com/problems/longest-common-...原创 2019-08-26 15:38:09 · 164 阅读 · 0 评论 -
leetcode 压缩字符串
给定一组字符,使用原地算法将其压缩。压缩后的长度必须始终小于或等于原数组长度。数组的每个元素应该是长度为1的字符(不是 int 整数类型)。在完成原地修改输入数组后,返回数组的新长度。示例 1:输入:["a","a","b","b","c","c","c"]输出:返回6,输入数组的前6个字符应该是:["a","2","b","2","c","3"]说明:"aa"...转载 2019-08-23 14:38:30 · 421 阅读 · 0 评论