Python笔记
python实用
贾世林jiashilin
alanjia163@163.com 贾世林jiashilin 计算机 软件工程 AI bigdata
展开
-
分割和拼接_交换.py
#!/usr/bin/env python# -*- coding:utf-8 -*- # Author: Jia ShiLinimport numpy as npt1 = np.arange(12).reshape(2, 6)print(t1)t2 = np.arange(24).reshape(4, 6)print(t2)# #竖直拼接print(np.vstack((...原创 2019-03-28 10:59:02 · 1133 阅读 · 0 评论 -
python-读取和保存npy文件
import numpy as np# .npy文件是numpy专用的二进制文件arr = np.array([[1, 2], [3, 4]])# 保存.npy文件np.save("../data/arr.npy", arr)print("save .npy done")# 读取.npy文件np.load("../data/arr.npy")————————————————...原创 2019-10-22 18:02:47 · 2485 阅读 · 0 评论 -
python二维数组取值,python中[j,:],[:,i]
通常用法:x[:,n]或者x[n,:],逗号前表示行,逗号后表示列X[:,0]是numpy中数组的一种写法,表示对一个二维数组,取该二维数组第一维中的所有数据,第二维中取第0个数据,直观来说,X[:,0]就是取所有行(每个子列表)的第0个数据, 也就是对于一行都取,但是只取第‘0’列 X[:,1] 就是取所有行的第1个数据。import numpy as np X = np.arra...原创 2019-07-23 23:52:03 · 17029 阅读 · 0 评论 -
函数有默认参数值时候Python
在使用缺省参数后,对于函数的必填参数必须在前,默认参数在后def print1(a,b=1,c=2):print(a,b,c)2.另外对于*args,**kwargs,如果传入的参数如a=1,确定变量名,则全部由字典接受,否则由元组接收3.在传入参数时候,可以在参数值前面加上*或者**来指定传给*args,**kwargs4,id()可以得到变量的地址...原创 2019-03-21 13:09:45 · 155 阅读 · 0 评论 -
try exception抛异常,finally,else,自定义异常
目录try...except...try...finally...else抛出自定义的异常try...except...try: print numexcept IOError: print('产生错误了')try...finally...在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally...原创 2019-05-27 11:02:55 · 703 阅读 · 0 评论 -
df.as_matrix()
在我们读取一些excel/csv文件的数据后,在训练模型之前经常要对数据进行数组转化解释含义如下:Convert the frame to its Numpy-array representation.当然很多时候在提取完数据后其自身就是数组形式(<class ‘numpy.ndarray’>),这只是习惯性的谨慎。很多时候取得的数据是DataFrame的形式,这个时候要...原创 2019-07-23 23:21:02 · 1906 阅读 · 0 评论 -
Python文件读写操作
基本却不常用(有弊端):open(path,mode),r 以读取方式打开文件,,文件不存在会报错 w 文件存在就覆盖 a 追加的方式打开文件,不存在就创建, b 二进制模式,处理非文本文件文件使用完后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的 # 1、以读的方式打开文件 f = open("1.txt", "r") #...原创 2019-03-21 13:09:41 · 169 阅读 · 0 评论 -
np.unique()
a = np.unique(A)对于一维数组或者列表,unique函数去除其中重复的元素,并按元素由大到小返回一个新的无元素重复的元组或者列表import numpy as npA = [1, 2, 2, 5,3, 4, 3]a = np.unique(A)B= (1, 2, 2,5, 3, 4, 3)b= np.unique(B)C= ['fgfh','asd','fgfh'...原创 2019-07-16 18:35:54 · 4819 阅读 · 3 评论 -
GIL锁
GIL定义GIL,the Global Interpreter Lock,直译为“全局解释锁”,在Cpython解释器中,同一个进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势GIL存在原因CPython在执行多线程的时候并不是线程安全的,所以为了程序的稳定性,加一把全局解释锁,能够确保任何时候都只有一个Python线程执行。我们需要明确的一点是GIL并不是Python...原创 2019-06-03 21:48:02 · 194 阅读 · 0 评论 -
11. 盛最多水的容器
方法一:暴力两层循环class Solution: def maxArea(self, height: List[int]) -> int: height_lenth = len(height) max = 0 for i in range(height_lenth): for j in range(i,h...原创 2019-05-01 16:32:23 · 194 阅读 · 0 评论 -
全局变量命名g_x
1. 全局变量命名一遍是:另外在局部变量如果用到全局变量,无论有没有修改变量,建议 global g_x申明下,后面可能用到会修改2.is NoneNone一般做判断的时候搭配 is3.字典+集合字典定义: 字典变量名 = {key:value,key:value}使用: 字典变量名[key]key为不可变对象访问字典:1利用下表2利用字典变量名.get...原创 2019-03-21 13:09:49 · 1864 阅读 · 0 评论 -
python汉诺塔估计CPU
#!/usr/bin/env python# -*- coding:utf-8 -*-# Author: Jia ShiLin'''汉诺塔:::list1,list2,list3三个数组代表三个柱子和圆盘数字的大小代表圆盘的大小!数字的顺序代表圆盘的顺序'''import timeimport datetime# 汉诺塔函数def h(n, x_list, y_lis...原创 2019-02-27 21:46:10 · 164 阅读 · 0 评论 -
有了二叉查找树、平衡树为啥还需要红黑树?
红黑树算是很难的一种数据结构吧,一般很少考察插入、删除等具体操作步骤,如果遇到要你手写红黑树的面试官,就直接告辞吧。所以,更多是会考察你对红黑树的理解程度,考察的最多的估计就是为什么有了二查找查找树/平衡树还需要红黑树这个问题了,今天,你只需要花一分钟的时间,就知道怎么回答这个问题了。1、二叉查找树的缺点二叉查找树,相信大家都接触过,二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树...原创 2019-10-05 18:28:50 · 156 阅读 · 0 评论 -
Counter() most_common()统计
most_common()函数,统计出现的次数import collectionsa = ['你好', '你好', '中国', '华为']b = collections.Counter(a).most_common(3)print(b)输出:[('你好', 2), ('中国', 1), ('华为', 1)]计数值的访问与缺失的键当所访问的键不存在时,返回0...原创 2019-06-05 14:30:59 · 6507 阅读 · 0 评论 -
pycharm快捷缩放字体,Pycharm快捷键设置(鼠标滚动控制字体大小)
转https://www.cnblogs.com/luyanru66/p/9677567.html一、pycharm字体放大的设置File —> setting —> Keymap —>在搜寻框中输入:increase—> Increase Font Size(双击) —> 在弹出的对话框中选择Add Mouse Shortcut在弹出的对话框中...转载 2019-04-03 22:55:28 · 8584 阅读 · 0 评论 -
Python查看数据类型,方法,type isinstance
方法一:type(变量名)使用场景:这种方法适合在控制台调试时使用代码例子:>>> type(1)<type 'int'>方法二:(推荐使用)语法: isinstance(变量名,数据类型)拓展: 数据类型可以是一个元组,表示判断变量是不是多个数据类型中的某一个。isinstance() 与 type()...原创 2019-04-06 13:07:05 · 1548 阅读 · 0 评论 -
排序总结
快速排序快速排序的时间复杂度最好是O(nlogn),平均也是O(nlogn),这种情况是轴枢恰好能把两侧的分开。 时间复杂度最差是O(N2),最差的情况选择的轴枢在数组最左侧或是最右侧插入排序如果序列是完全有序的,插入排序只要比较n次,无需移动时间复杂度为O(N) 如果序列是逆序的,插入排序要比较O(N2)和移动O(N2) 总得来说,时间复杂度最好的情况是O(N),最差的情...原创 2019-07-17 23:07:47 · 78 阅读 · 0 评论 -
Python 中类方法、类实例方法、静态方法有何区别?
实例方法 定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法); 调用:只能由实例对象调用。类方法 定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法); 调用:实例对象和类对象都可以调用。...原创 2019-06-17 22:10:53 · 1136 阅读 · 0 评论 -
怎么实现只读属性?
方法一:对象私有化#!/usr/bin/env python# -*- coding:utf-8 -*- # Author: Jia ShiLinclass person(object): def __init__(self,x): self._age = 20 def get_age(self): return self._ag...原创 2019-06-22 23:18:11 · 570 阅读 · 0 评论 -
打乱一个排好序的 list 对象
a=[1, 2, 3, 4, 5, 6] random.shuffle(a) print(a)原创 2019-06-15 21:52:11 · 278 阅读 · 0 评论 -
492. 构造矩形
class Solution: def constructRectangle(self, area: int) -> List[int]: lw = [] if area==1: return [1,1] for w in range(1,area): if area%w ==0: ...原创 2019-03-28 11:00:04 · 190 阅读 · 0 评论 -
python 如何在一个for循环中遍历两个列表
python 如何在一个for循环中遍历两个列表利用python自带的zip函数可同时对两个列表进行遍历,代码如下:>>> list1 = ['a', 'b', 'c', 'd']>>> list2 = ['apple', 'boy', 'cat', 'dog']>>> for x, y in zip(list1, list2)...原创 2019-06-11 19:54:24 · 16250 阅读 · 3 评论 -
汉诺塔_递归过程
#!/usr/bin/env python# -*- coding:utf-8 -*-# Author: Jia ShiLin'''汉诺塔:::list1,list2,list3三个数组代表三个柱子和圆盘数字的大小代表圆盘的大小!数字的顺序代表圆盘的顺序'''# 汉诺塔函数def h(n, x_list, y_list, z_list, x, y, z): glo...原创 2019-02-27 21:45:20 · 288 阅读 · 0 评论 -
21合并两个有序链表.py
#!/usr/bin/env python# -*- coding:utf-8 -*-# Author: Jia ShiLin# Definition for singly-linked list.class ListNode: def __init__(self, x): self.val = x self.next = Nonedef ...原创 2019-03-08 22:52:45 · 141 阅读 · 0 评论 -
python数据类型转换
float(x ) 将x转换为一个浮点数 int(x [,base ]) 将x转换为一个整数 str(x ) 将对象 x 转换为字符串 eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象 str = '1+2'print(eval(str))输出:3tuple(s ) 将序列 s 转换为一个元组 lis...原创 2019-05-21 22:39:31 · 187 阅读 · 0 评论 -
read、readline 和 readlines 的区别?linecache模块
read:读取整个文件。readline:读取下一行,使用生成器方法。readlines:读取整个文件到一个迭代器以供我们遍历。一、read([size])方法read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象f = open("a.txt")lines = f.read()print lines...原创 2019-06-13 16:14:21 · 433 阅读 · 0 评论 -
使用分治法求解的一些经典问题
使用分治法求解的一些经典问题(1)二分搜索 (2)大整数乘法 (3)Strassen矩阵乘法 (4)棋盘覆盖 (5)合并排序 (6)快速排序 (7)线性时间选择 (8)最接近点对问题 (9)循环赛日程表 (10)汉诺塔https://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html...原创 2019-09-16 23:35:55 · 3516 阅读 · 0 评论 -
两个列表、多列表 拼接
列表拼接主要有以下三种方式:最简单的使用“+”; 使用切片赋值的方法; 使用列表自带的extend方法方式一:简简单单的“+”此方法易于理解,但你会发现其实list1已经不是原来那个list1了,list1的id值已经发生改变。方法二:切片赋值我们发现使用切片赋值的拼接就地执行,即它会修改原来的列表,但易读性不高方式三:列表自带的extend()...原创 2019-08-20 11:08:45 · 8863 阅读 · 0 评论 -
456. 132模式python
自己写的代码超出时间限制 mmp!!!在看看大佬写的代码 what fuck?算了,附上大佬博客如下 https://blog.csdn.net/Neekity/article/details/84750270#!/usr/bin/env python# -*- coding:utf-8 -*- # Author: Jia ShiLin'''思路应该是没有问题的,但是但是,,...原创 2019-03-30 16:49:35 · 196 阅读 · 0 评论 -
717. 1比特与2比特字符
#!/usr/bin/env python# -*- coding:utf-8 -*- # Author: Jia ShiLindef isOneBitCharacter(bits): i = 0 while i < len(bits) - 1: if bits[i] == 0: i += 1 else: ...原创 2019-03-30 09:59:07 · 86 阅读 · 0 评论 -
LeetCode 43.字符串相乘
每一位相乘,比如123,*456= (100*456)+(20*456)+(3*456)=(100*400+100*50+100*6) +(...)+(...)#!/usr/bin/env python# -*- coding:utf-8 -*- # Author: Jia ShiLinif __name__ == '__main__': num1 ='123...原创 2019-08-25 15:36:32 · 111 阅读 · 0 评论 -
92. 反转链表 II
#!/usr/bin/env python# -*- coding:utf-8 -*- # Author: Jia ShiLinclass ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: def reverseBetween(self...原创 2019-07-29 10:47:41 · 104 阅读 · 2 评论 -
Python的复制,深拷贝和浅拷贝的区别
转https://www.cnblogs.com/wft1990/p/5808010.html在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用一般有三种方法:(1)直接赋值,传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变>>> alist=[...转载 2019-04-04 11:15:43 · 140 阅读 · 0 评论 -
查询平均工资小于5时候的部门
select 部门名称,人员ID,人员姓名,人员薪资 from dept_salary_info group by 部门名称 having avg(人员薪资)<5;原创 2019-09-08 20:32:07 · 1231 阅读 · 0 评论 -
pycharm设置快速响应时间
将时间改为<10#ctrl+shift+a:万能命令行 new pack :新建一个包 python file:新建一个python文件 show in file:打开文件所在磁盘的目录 #alt+enter:修正# ctrl+shift+enter:向下一行#ctrl+alt+enter:向上一行# ctrl+al...原创 2019-03-19 21:14:56 · 883 阅读 · 0 评论 -
14最长公共前缀 +python (leetcode)
#!/usr/bin/env python# -*- coding:utf-8 -*- # Author: Jia ShiLin\#方法一和二的思想一样 # 方法一s_list = ['abbba', 'abbsb', 'acccccccccccc', 'abbbbbbbbbbbac']s_list.sort(key=lambda x: len(x))shot_str = ...原创 2019-03-07 18:16:24 · 88 阅读 · 0 评论 -
一根不均匀的绳子,全部烧完需要1个小时,问怎样烧能计时1个小时15分钟
一根绳子从两头烧,烧完就是半个小时。 一根要一头烧,一根从两头烧,两头烧完的时候(30分),将剩下的一根另一端点着,烧尽就是45分钟。再从两头点燃第三根,烧尽就是1时15分。 ...原创 2019-07-21 13:01:29 · 5940 阅读 · 1 评论 -
leetcode 15. 三数之和 (python)
思路:1先排序2.外层遍历,i3.内层用一个双指针判断,是否和为i'''参考博文https://www.jianshu.com/p/588caa7567c1https://www.jianshu.com/p/19b0261c73b9#!/usr/bin/env python# -*- coding:utf-8 -*- # Author: Jia ShiLin'...原创 2019-04-01 15:57:14 · 155 阅读 · 0 评论 -
iterables、generator、yield的区别
迭代器迭代,很简单,就是重复一个操作多次嘛。迭代器(Iterator)是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。 在python中,没有内置迭代器类型的对象,但是可...原创 2019-07-29 23:01:02 · 616 阅读 · 0 评论 -
列表增删改查
目录<1>添加元素("增"append, extend, insert)append和extend<2>修改元素("改")<3>查找元素("查"in, not in, index, count)<4>删除元素("删"del, pop, remove)<5>排序(sort, reverse)<1>...原创 2019-05-24 23:17:06 · 746 阅读 · 0 评论