python函数

Python 高级特性之迭代

梦想的初衷 提交于 2020-03-21 21:58:41
什么是迭代呢?如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。在Python中,迭代是通过for ... in来完成的,例如: 因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样,默认字典迭代的是key,如果要迭代value,可以用for value in d.values() 例如: 如果要同时迭代key和value,可以利用 for key,value in d.items() 例如: 同样字符串也是可以迭代的,例子如图 如何判断一个对象是可迭代呢?方法是通过collections模块的Iterable类型判断: Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身: for循环里,同时可以两个变量,在Python里是很常见的,比如下面的代码: 来源: 51CTO 作者: swq8023 链接: https://blog.51cto.com/8922100/2480735

python之*args和**kwargs的区别

孤街醉人 提交于 2020-03-21 21:53:42
一、*args的使用方法 *args 用来将参数打包成tuple给函数体调用 例子一: def function(*args): print(args, type(args)) function(1) #(1,) <class 'tuple'>   例子二: def function(x, y, *args): print(x, y, args) function(1, 2, 3, 4, 5) #1 2 (3, 4, 5) 二、**kwargs的使用方法 **kwargs 打包关键字参数成dict给函数体调用 例子一: def function(**kwargs): print( kwargs, type(kwargs)) function(a=2) #{'a': 2} <class 'dict'> 例子二: def function(**kwargs): print(kwargs) function(a=1, b=2, c=3) #{'c': 3, 'b': 2, 'a': 1} 注意点:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。 def function(arg,*args,**kwargs): print(arg,args,kwargs) function(6,7,8,9,a=1

结巴分词(Python中文分词组件)

谁说胖子不能爱 提交于 2020-03-21 19:55:01
1.安装 sudo pip install jieba 或者 下了jieba后 sudo python setup.py install 如果需要permission的话 2.使用 1. 分词 jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型 jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8 jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用 jieba.lcut 以及 jieba.lcut_for_search 直接返回 list jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。 jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射 来源: https://www.cnblogs.com

python-淘宝信息定向爬取

坚强是说给别人听的谎言 提交于 2020-03-21 19:50:39
S是类似产品页数 bcoffset直流偏移。 有人在将偏移量:http://www.cnblogs.com/defineconst/p/6185396.html item.taobao.com/item.htm?参数。常见参数如下 &spm 流量来源 &id 淘宝id &ali_trackid 阿里妈妈id &ali_refid --------官方解析文档----------- 淘宝开放平台 - 文档中心 http://open.taobao.com/docs/doc.htm?articleId=959&docType=1&treeId=null -----for instance---- SPM编码:用来跟踪页面模块位置的编码,标准spm编码由4段组成,采用a.b.c.d的格式(建议全部使用数字),其中, a代表站点类型,对于xTao合作伙伴(外站),a为固定值,a=2014 b代表外站ID(即外站所使用的TOP appkey),比如您的站点使用的TOP appkey=123456789,则b=123456789 c代表b站点上的频道ID,比如是外站某个团购频道,某个逛街频道,某个试用频道 等 d代表c频道上的页面ID,比如是某个团购详情页,某个宝贝详情页,某个试用详情页 等 -淘宝课程不错哎╮( ̄▽ ̄")╭--- 开放平台学院 http://xue.open.taobao

python多线程

若如初见. 提交于 2020-03-21 18:43:47
一、threading   多任务可以由多进程完成,也可以由一个进程内的多线程完成。我们前面提到了进程是由若干线程组成的,一个进程至少有一个线程。由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程。   Python的标准库提供了两个模块: thread 和 threading , thread 是低级模块, threading 是高级模块,对 thread 进行了封装。绝大多数情况下,我们只需要使用 threading 这个高级模块。启动一个线程就是把一个函数传入并创建 Thread 实例,然后调用 start() 开始执行: import time, threading # 新线程执行的代码: def loop(): print 'thread %s is running...' % threading.current_thread().name n = 0 while n < 5: n = n + 1 print 'thread %s >>> %s' % (threading.current_thread().name, n) time.sleep(1) print 'thread %s ended.' % threading.current

python17 多线程学习

喜夏-厌秋 提交于 2020-03-21 18:43:14
多线程 多任务可以由多进程完成,也可以由一个进程内的多线程完成。 我们前面提到了进程是由若干线程组成的,一个进程至少有一个线程。 由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外, 并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程。 Python的标准库提供了两个模块: _thread 和 threading , _thread 是低级模块, threading 是高级模块,对 _thread 进行了封装 。绝大多数情况下,我们只需要使用 threading 这个高级模块。 启动一个线程就是把一个函数传入并创建 Thread 实例,然后调用 start() 开始执行: import time, threading # 新线程执行的代码: def loop(): print('thread %s is running...' % threading.current_thread().name) n = 0 while n < 5: n = n + 1 print('thread %s >>> %s' % (threading.current_thread().name, n)) time.sleep(1) print('thread %s ended.' % threading.current_thread

python学习笔记-41 多线程

泄露秘密 提交于 2020-03-21 18:42:52
多任务可以由多进程完成,也可以由一个进程内的多线程完成。 我们前面提到了进程是由若干线程组成的,一个进程至少有一个线程。 由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程。 Python的标准库提供了两个模块: _thread 和 threading , _thread 是低级模块, threading 是高级模块,对 _thread 进行了封装。绝大多数情况下,我们只需要使用 threading 这个高级模块。 启动一个线程就是把一个函数传入并创建 Thread 实例,然后调用 start() 开始执行: import time, threading # 新线程执行的代码: def loop(): print('thread %s is running...' % threading.current_thread().name) n = 0 while n < 5: n = n + 1 print('thread %s >>> %s' % (threading.current_thread().name, n)) time.sleep(1) print('thread %s ended.' % threading.current_thread()

python序列(七)序列操作的常用内置函数

ⅰ亾dé卋堺 提交于 2020-03-21 18:36:28
1.len(列表):返回:列表中的元素个数,同样适用于元组、字典、集合、字符串等。   max(列表)、min(列表):返回列表中的最大或最小元素同样适用于元组、字典、集合、range对象等。   sum(列表):对列表的元素进行求和运算,对非数值型列表运算需要指定start参数,同样适用于元组、range。 >>> sum(range(1,11))    #sum()函数的start参数默认为0 55 >>> sum(range(1,11),5)   #指定start参数为5 60>>> sum([[1,2],[3],[4]],[])#这个操作占用空间较大,慎用 [1, 2, 3, 4] 2.zip()函数返回可迭代的zip对象   zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。   如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用*号操作符,可以将元组解压为列表。 >>> alist = [1,2,3] >>> blist = [4,5,6] >>> clist =zip(alist,blist)  #返回zip对象 >>> clist <zip object at 0x00000216BC8428C0> >>> list(clist)          #把zip对象转换成列表 [(1, 4),

python匿名函数(lambda)

邮差的信 提交于 2020-03-21 18:36:10
与正常写法相比,使用匿名函数相当简洁 map() 遍历所有 a = [1, 2, 3] x = [] for each in a: x.append(each+1) print(x) ### 使用map(func, iterable) print(list(map(lambda x: x+1, a))) reduce(func, seq) 积累每次计算的值 def num(x, y): return x + y print(reduce(num, [1, 2, 3, 4])) -------------------------- print(reduce(lambda x, y: x*y, [1, 2, 3, 4])) filter(func, iterable) 过滤满足条件的值 print(list(filter(lambda x: x%2==0,range(10)))) 本文首发于 python黑洞网 ,博客园同步更新 来源: https://www.cnblogs.com/pythonzhilian/p/12541117.html

python序列(六)列表排序

情到浓时终转凉″ 提交于 2020-03-21 18:24:01
  1.sort方法排序原址排序     list.sort(key=None,reverse=False(or True))     当reverse=False时:为正向排序;     当reverse=True时:为反向排序。     默认为False。   2.key:排序关键字,值为一个函数,此函数只有一个参数且返回一个值,比如,有一个User对象的list,希望通过对象的user_id树形进行排序,可以提供一个以User实例作为输入并输出对应user_id值得函数给key(即key=lambda u:uuser_id或key=attrgetter(‘user_id’))   3.执行完后会改变原来的list,如果你不需要原来的list,这种效率稍微高点 >>> list = [1,2,3,4,5,6,7,8,9] >>> list [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> import random>>> random.shuffle(list)    #打乱顺序 >>> list [8, 1, 9, 2, 4, 3, 5, 6, 7] >>> list.sort()          #默认是升序排序 >>> list.sort(reverse = True)  #降序排序 >>> list [9, 8, 7, 6, 5, 4, 3, 2, 1]