
python
hsc_1
这个作者很懒,什么都没留下…
展开
-
python中的函数
Python中函数也是对象。也就是说,它有值,可以被作为值赋给其他变量,也可以作为参数传递和当作函数的返回值。 函数的真正面目 我们可以用class来构造函数对象,有成员函数__call__的就是函数对象了,函数对象被调用正是调用的__call__。class Operate(object): def __init__(self,message): pr...原创 2018-03-07 18:02:38 · 170 阅读 · 0 评论 -
python中的装饰器
def make_bold(func): def wrapper(): return "<b>%s</b>" % func() return wrapper@make_bolddef get_content(): return "Hello World"print(get_content())//输出为:<b>...原创 2018-03-07 19:16:47 · 145 阅读 · 0 评论 -
面试题
今天有个面试,关于python开发的。做了一套题,感觉还不错。但是,没被录用。三天也没给个结果,我觉得是悬了。打算收拾收拾去杭州了。其中有一个题目,我当时想的是要花点时间,我就算了。现在想想我是真的傻逼。一直觉得什么事情别人看着我,我就很不好意思。这其实是个很不好的毛病。既然别人没叫我停,我就应该想下去,直到做完或者别人叫我停止。既然别人没叫我停,我就应该一直做下去的。回来第二天晚上,我想了想这个...原创 2018-03-14 21:46:31 · 142 阅读 · 0 评论 -
numpy读取数据
with open('hehe.bin','wb') as file: for i in range(10): file.write(struct.pack("B",i))In [10]: import numpy as npIn [11]: np.fromfile("hehe.bin",dtype=np.int8)Out[11]: array([0, 1, 2, 3...原创 2018-03-14 21:48:22 · 3176 阅读 · 0 评论 -
numpy的Set Logic(集合逻辑)
NumPy有一些对于一维array中的集合的基本操作。可能,其中最常用的一个就是np.unique,这个函数返回一个排好序的元素值唯一的array。In [3]: names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])In [4]: np.unique(names)Out[4]:array(['Bob', ...原创 2018-03-15 08:59:16 · 1627 阅读 · 0 评论 -
numpy中的concatenate
首先看看两个例子:In [36]: a=np.arange(6).reshape((2,3))In [37]: aOut[37]:array([[0, 1, 2], [3, 4, 5]])In [38]: bOut[38]:array([[ 6, 7, 8], [ 9, 10, 11]])In [39]: np.concatenate((a,b)...原创 2018-03-15 10:00:22 · 1104 阅读 · 0 评论 -
numpy.where
numpy.where函数是三元表达式的向量形式三元表达式x=a if b else c如果b为真,则x=a,如果b为假,则x=c。如下In [45]: xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])In [46]: yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])In [47]: cond = np.array([...原创 2018-03-15 10:20:45 · 429 阅读 · 0 评论 -
Universal Functions
Universal Functions: Fast Element-wise Array FunctionsA universal function, or ufunc, is a function that performs elementwise operations ondata in ndarrays. You can think of them as fast vectorized wr...原创 2018-03-15 10:24:28 · 761 阅读 · 0 评论 -
np.flatten
numpy.ndarray.flattenndarray.flatten(order='C')Return a copy of the array collapsed into one dimension.Parameters:order : {‘C’, ‘F’, ‘A’, ‘K’}, optional‘C’ means to flatten in row-major (C-style) orde...原创 2018-03-15 10:34:00 · 377 阅读 · 0 评论 -
关于排序
列表中的sort和sortedsort是inplace排序,且sort是列表的一个函数In [25]: a=[2,3,1]In [26]: a.sort()In [27]: aOut[27]: [1, 2, 3]注意:列表调用sort方法后是没有返回值的。如果在使用的时候,忘记这个,是非常崩溃的。sorted是对所有可迭代对象排序In [34]: students = [('john',...原创 2018-03-16 18:12:59 · 224 阅读 · 0 评论 -
内置的函数hasattr,setattr,getattr以及operator中的itemgetter和attrgetter
itemgetteritemgetter(arg)返回一个函数,用于获取传入对象的第arg个元素itemgetter(*arg)返回一个函数,以元组的形式返回对象的索引的元素例如:In [40]: from operator import itemgetterIn [41]: a=itemgetter(1)In [42]: b=[1,2,3]In [43]: a(b)Out[43]:...原创 2018-03-16 18:15:16 · 475 阅读 · 0 评论 -
python推导式
1. 列表推导式[n for n in range(10)]2. 字典推导式{key:value for index,item in enumerate([1,2,3])}生成的对象为以[1,2,3]中元素的索引为键,元素为值的字典3. 没有元组推导式x=(n for n in range(10)) 这个x是生成器表达式,并不是相应的元组推导式,因为元组为不可变对象。...原创 2018-03-10 20:08:12 · 159 阅读 · 0 评论 -
小心可变的默认参数
python中的可变参数需要注意,这个问题看起来虽小,但是当其出现,就可能压根不知道问题到底出现在哪里,为此而揪心费脑的花去几天的时间也是极有可能的。例如:def f(x=[]): x.append(1) print(x)f()f()f()你以为的结果可能是,[1][1][1]而实际的结果是[1][1, 1][1, 1, 1]究其原因,是函数也是对象,默认参数是函数的...原创 2018-03-10 20:17:44 · 156 阅读 · 0 评论 -
发送值到生成器
def mygen(): a=5 while True: f=(yield a) if f is not None: a=f>>> g = mygen()>>> g.next()5>>> g.next()5>>> g.send(7) #we s...原创 2018-03-10 20:36:32 · 128 阅读 · 0 评论 -
字典中的get方法
字典的get()方法用来替换d['key'],后者如果是遇到key不存在会有异常,如果使用的d.get('key'),key不存在时它返回的是None,你可以指定两个参数如:d.get('key',0)来用0取代返回的Nonesum[value] = sum.get(value, 0) + 1还有一个类似的方法setdefault(key, value),如果字典中存在key,那么就直接返回d[...原创 2018-03-10 20:43:30 · 5537 阅读 · 0 评论 -
条件赋值
为什么python中没有类c语言的三目运算符,Guido van Rossum说过了,条件赋值更容易理解x = 3 if (y == 1) else 2这个表达式的意思就是:如果y等于那么就把3赋值给x,否则把2赋值给x, 条件中的括号是可选的,为了可读性可以考虑加上去.if else中的表达式可以是任何类型的,既可以函数,还可以类(func1 if y == 1 else func2)(arg...原创 2018-03-10 20:44:37 · 3153 阅读 · 0 评论 -
动态的创建新类型
动态创建新类型虽不是实用功能,但了解一下也是有好处的>>> NewType = type("NewType", (object,), {"x": "hello"})>>> n = NewType()>>> n.x"hello"type的第一个参数就是类名,第二个参数是继承的父类,第三个参数是类的属原创 2018-03-10 20:45:59 · 211 阅读 · 0 评论 -
变量值交换
python变量交换很简单。要交换变量a,b的值其他语言可能采取如下方法temp=a;a=b;b=temp;而在python中,则只需一步就可完成>>> a = 10>>> b = 5>>> a, b(10, 5)>>> a, b = b, a>>> a, b(5, 10)这个肯定不是按原创 2018-03-10 20:47:39 · 168 阅读 · 0 评论 -
for ... else语法
for i in foo: if i == 0: breakelse: print("i was never 0")else代码块只有在for循环正常结束后执行如果遇到break语句那么不会执行else语句块,等价于下面:found = Falsefor i in foo: if i == 0: found = True ...原创 2018-03-10 20:49:07 · 273 阅读 · 0 评论 -
利用pandas实现SQL中的操作
连接设a1,a2为两个dataframe,二者中存在相同的键值,两个对象连接的方式有下面几种:(1)内连接,pd.merge(a1, a2, on='key')(2)左连接,pd.merge(a1, a2, on='key', how='left')(3)右连接,pd.merge(a1, a2, on='key', how='right')(4)外连接, pd.merge(a1, a2, on='...原创 2018-03-16 20:25:34 · 954 阅读 · 0 评论 -
pandas读取数据
1.选择特定列和行的数据a['x'] 那么将会返回columns为x的列,这种方式只能以列名的方式读取数据。a.x与a['x']意思一样。还可以a[['x','y']]来读取x和y两列。只能通过切片来选择行数据,如:a[0:3] 则会返回前三行的数据。需要注意的是,这个地方只能通过切片,而不能通过诸如a[0]或者来a[[0,2,1]]选取行2.loc是通过行列标签来选择数据a.loc['one']...原创 2018-03-16 20:49:59 · 1362 阅读 · 1 评论 -
python中的slice函数
功能:slice() 函数实现切片对象,主要用在切片操作函数里的参数传递。返回一个切片对象。语法:class slice(stop)class slice(start, stop[, step])start -- 起始位置stop -- 结束位置step -- 间距实例:1 >>>myslice = slice(5) # 设置截取5个元素的切片2 >>>...原创 2018-03-10 21:36:47 · 6395 阅读 · 0 评论 -
UnboundLocalError
It can be a surprise to get the UnboundLocalError in previously working code when it is modified by adding an assignment statement somewhere in the body of a function.在一个函数内部的某个地方,对一个变量通过赋值来修改的时候,遇到...原创 2018-03-11 07:58:41 · 8828 阅读 · 1 评论 -
python中的is和==的区别
python对象的三个基本要素:id,type,value==叫做比较操作符,是用来判断value是否相等a='hudahai'b='hudahai'print(a==b)结果为:True而is是同一性操作符,就是比较对象的唯一身份标识,就是id是否相同a='hudahai'b='hudahai'print(a is b)结果为:True这个出乎意料,为什么呢?因为对a赋值,相当于开辟一个...原创 2018-03-11 08:57:05 · 236 阅读 · 0 评论 -
python中删除列表中的元素
1. removeremove删除列表中的某个元素,但是只删除第一(这个第一是指从前至后)个出现的。In [11]: a=[0,2,3,2]In [12]: aOut[12]: [0, 2, 3, 2]In [13]: a.remove(2)In [14]: aOut[14]: [0, 3, 2]2. del根据元素的索引删除元素In [21]: a=[0, 2, 3, 2]I...原创 2018-03-11 13:06:00 · 4036 阅读 · 0 评论 -
python中常犯的错误
1. x+=y和x=x+y这两个式子看着结果是一样的,但是其中最后的结果却不一样In [30]: x=[1]In [31]: id(x)Out[31]: 2176766739912In [32]: x+=[2]In [33]: id(x)Out[33]: 2176766739912In [35]: x=[1]In [36]: id(x)Out[36]: 21767667411...原创 2018-03-11 13:19:14 · 298 阅读 · 0 评论 -
pandas中的concat和append
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)我觉得concat中要与join和merge分别开来最重要的参数就是ig...原创 2018-03-17 08:54:10 · 10753 阅读 · 1 评论 -
pandas中的join
这个join在文档中第一次出现的时候是这样的大致猜一下意思就是根据特定的列和索引进行合并。a.join(b,on='keys')代表的是,以a的'keys'列和b的索引为关键字进行比较,相同的进行合并。In [85]: left = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], ....: 'B': ['B...原创 2018-03-17 10:20:22 · 4650 阅读 · 0 评论 -
pandas中常用的操作
In [84]: rightOut[84]: C DK0 C0 D0K1 C1 D1In [85]: right['C'][right['C']=='C0']Out[85]:K0 C0Name: C, dtype: object原创 2018-03-17 10:50:31 · 284 阅读 · 0 评论 -
python中的正则表达式
反斜杠的问题python中使用正则表达式作为转义字符,这就可能造成反斜杠困扰。假如你在文本中匹配字符'\',那么正则表达式中则需要为'\\\\',前两个和后两个都是用于将反斜杠转义成反斜杠,然后反斜杠再将反斜杠转义成字符串中的反斜杠。In [38]: r'\\'Out[38]: '\\\\'正则表达式用到的主要方法#返回pattern对象re.compile(string[,flag]) #...原创 2018-03-17 15:38:57 · 250 阅读 · 0 评论 -
正则表达式中的flags
re.I IGNORECASE, 忽略大小写的匹配模式In [59]: s = 'hello World!'In [60]: regex = re.compile("hello world!", re.I)In [61]: regex.match(s).group()Out[61]: 'hello World!'re.M MULTILINE,多行模式, 改变 ^ 和 $ 的行...原创 2018-03-17 16:31:53 · 3776 阅读 · 0 评论 -
除法
算法中常用一个数除以一个数然后取整来获得计算的结果的,如果没有这种思想,那么遇到一些问题可能会无法获得解答。python中的/的应用In [1]: 3/2Out[1]: 1.5常用的方式In [5]: int(3/2)Out[5]: 1比较优雅的方式为In [6]: 3//2Out[6]: 1...原创 2018-03-12 09:25:01 · 229 阅读 · 0 评论 -
pandas中的applymap和apply
对每列或每行的一维数组应用一个函数是一个常用的操作,这时apply就派上用场了。In [5]: frame =pd.DataFrame(np.random.randn(4, 3), columns=list('bde'), ...: .....: index=['Utah', 'Ohio', 'Texas', 'Oregon']) ...: ...:In [6]: fram...原创 2018-03-17 22:18:55 · 1523 阅读 · 0 评论 -
ww
In [16]: np.where(df==5)Out[16]: (array([1], dtype=int64), array([2], dtype=int64))原创 2018-03-17 22:29:17 · 325 阅读 · 0 评论 -
python中的match对象
match.group()返回匹配对象的一个或多个分组。不含参数的时候,返回整个匹配对象含有一个参数的时候,返回参数对应分组的对象含有多个参数的时候,以元组的形式返回参数对应的分组>>> m = re.match(r"(\w+) (\w+)", "Isaac Newton, physicist")>>> m.group(0) # The entir...原创 2018-03-18 08:43:02 · 16325 阅读 · 0 评论 -
堆排序
import java.util.*;public class HeapSorting{ public static void adajustHeap(int[] l,int i,int length){ for(int k=2*i+1;k<length;k++){ if(k+1<length && l[k]<l[k+1]) k++; ...原创 2018-03-12 12:18:15 · 120 阅读 · 0 评论 -
python中的Reindexing
Reindexing在一个Series上调用reindex是根据新的索引重新排列数据,如果有新的索引,那么对应的值为NaN。当然,如果新的索引不包含之前的索引,那么这些索引以及对应的数据并不包含在新返回的对象。In [49]: obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])In [50]: objOut[5...原创 2018-03-18 21:15:05 · 642 阅读 · 0 评论 -
Python可变参数*args和*kwargs
1. 在函数定义处,*args表示变长非关键字参数def demo_1(*args): print(args)demo_1(1,2,3) 函数的输出为:(1, 2, 3) 可以看出args表示的是一个元组,在函数调用的时候,传入多少个参数都可(不传也行) 其简单应用可以看下例:def test_var(formalarg,*args): print...原创 2018-03-06 09:44:34 · 371 阅读 · 0 评论 -
再谈全排列
def permute(nums): perms=[[]] for ele in nums: new_perms=[] for perm in perms: for i in range(len(perm)+1): new_perms.append(perm[:i]+[ele]+perm[i:]...原创 2018-04-09 19:40:58 · 115 阅读 · 0 评论 -
深度优先搜索
给一组候选数字(C)(没有重复)并给一个目标数字(T),找出 C 中所有唯一的组合使得它们的和为 T。可以从 C 无限次数中选择相同的数字。说明:所有数字(包括目标)都是正整数。解集合中没有相同组合。 例如,给一个候选集合 [2, 3, 6, 7] 并且目标为 7,一个解的集合为:[ [7], [2, 2, 3]]class Solution: def combinationS...原创 2018-04-10 09:53:46 · 126 阅读 · 0 评论