python for循环

python内置函数(三)

僤鯓⒐⒋嵵緔 提交于 2020-01-06 13:21:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> map() 函数 描述 map() 会根据提供的函数对指定序列做映射。 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。 语法 map(function, iterable, ...) 参数 function -- 函数 iterable -- 一个或多个序列 返回值 Python 2.x 返回列表。 Python 3.x 返回迭代器。 >>>def square(x) : # 计算平方数 ... return x ** 2 ... >>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方 [1, 4, 9, 16, 25] >>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数 [1, 4, 9, 16, 25] # 提供了两个列表,对相同位置的列表数据进行相加 >>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) [3, 7, 11, 15, 19] range() 函数 python range() 函数可创建一个整数列表,一般用在 for 循环中。

python迭代器详解

雨燕双飞 提交于 2020-01-05 07:09:06
迭代器 迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 1. 可迭代对象 我们已经知道可以对list、tuple、str等类型的数据使用for...in...的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫 迭代 。 但是,是否所有的数据类型都可以放到for...in...的语句中,然后让for...in...每次从中取出一条数据供我们使用,即供我们迭代吗? >>> for i in 100:... print(i)...Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: 'int' object is not iterable>>># int整型不是iterable,即int整型不是可以迭代的​# 我们自定义一个容器MyList用来存放数据,可以通过add方法向其中添加数据>>> class MyList(object):... def __init__(self):... self.container = []... def add(self, item):... self.container.append(item)...>>>

Python中的可迭代对象

夙愿已清 提交于 2020-01-05 07:08:35
  Python中的可迭代对象有:列表、元组、字典、字符串;常结合for循环使用; 判断一个对象是不是可迭代对象: from collections import Iterable isinstance(list(range(100)), Iterable) isinstance('Say YOLO Again.') 列表: L = list(range(100)) for i in L: print(i) 元组: T = tuple(range(100)) for i in T: print(i) 字典: dic = {'name': 'chen', 'age': 25, 'loc': 'Tianjin'} # 以列表的形式返回key list(dic.keys()) # 以列表的形式返回value list(dic.values()) # 循环key for key in dic: print(key) # 循环value for value in dic.values(): print(value) # 循环key, value for key, value in dic.items(): print(key, value) 字符串: S = 'Say YOLO Again!' for s in S: print(s) 返回'索引-元素'对: for i, value in

python中实现可迭代对象的方法

一世执手 提交于 2020-01-05 07:08:18
当对元组,列表,字典,集合,字符串使用for循环语句的时候,可以依次拿到里面的数据,这样的过程称为遍历,也叫迭代。 想要让创建出来的类的实例对象可以迭代,也就是可以使用for来遍历,需要在类中实现__iter__方法,需要实现__next__方法。 迭代一个可迭代对象的时候,实际上就是先获取该对象提供的一个迭代器(__iter__),然后通过这个迭代器来依次(__next__)获取对象中的每一个数据. class Classmates(): def __init__(self): self.name = [] self.current_num = 0 def add(self, name): self.name.append(name) def __iter__(self): return self def __next__(self): if self.current_num < len(self.name): ret = self.name[self.current_num] self.current_num += 1 return ret else: raise StopIteration # 抛出异常停止遍历 classmate = Classmates() classmate.add("张三") classmate.add("李四") classmate.add("王五"

python爬虫实战一:分析豆瓣中最新电影的影评

╄→尐↘猪︶ㄣ 提交于 2020-01-05 03:31:41
简介 刚接触python不久,做一个小项目来练练手。前几天看了《战狼2》,发现它在最新上映的电影里面是排行第一的,如下图所示。准备把豆瓣上对它的影评(短评)做一个分析。 目标总览 主要做了三件事: 抓取网页数据 清理数据 用词云进行展示 使用的python版本是3.5. 运行环境:jupyer notebook,如在其他环境下运行报错了,请查看评论区的讨论,里面有一些解决办法。 一、抓取网页数据 第一步要对网页进行访问,python中使用的是urllib库。代码如下: from urllibimportrequestresp = request.urlopen('https://movie.douban.com/nowplaying/hangzhou/')html_data = resp.read().decode('utf-8') 其中 https://movie.douban.com/nowp... ,可以在浏览器中输入该网址进行查看。 html_data是字符串类型的变量,里面存放了网页的html代码。 输入print(html_data)可以查看,如下图所示: 第二步,需要对得到的html代码进行解析,从里面提取我们需要的数据。 在python中使用BeautifulSoup库进行html代码的解析。 (注:如果没有安装此库,则使用pip install

32 字符串常用的方法 center find join split lower upper

故事扮演 提交于 2020-01-05 00:04:54
第八课 字符串中常用的方法:center方法 # 字符串方法:center # 作用是:将字符串在一定的宽度区域内居中显示 # 这个方法和我们之前将的format 中的 ^ 一样 # ^ print("<" + "hello".center(30) + ">") # < hello > # < hello > print("<{:^30}>".format("hello")) # < hello > # print("<" + "hello".center(20, "*") + ">") # <*******hello********> print("<{:*^20}>".format("hello")) # <*******hello********> ------------------------------------------------- 第九课 字符串中常用的方法:find方法 在大字符串中来查找子子字符串 如果找到了,find方法就会返回子子字符串的第一个字符在大字符串中出现的位置 有就是索引 如果未找到,那么find方法就会返回-1 find方法有3个参数 第一个是要查找的子字符串 第二个参数是开始索引 第三个参数是结束索引 左闭右开 # 字符串方法:find s = "hello world" print(s.find("world")) # 6

python数据采集与多线程效率分析

好久不见. 提交于 2020-01-04 04:54:00
以前一直使用PHP写爬虫,用 Snoopy 配合 simple_html_dom 用起来也挺好的,至少能够解决问题。 PHP一直没有一个好用的多线程机制,虽然可以使用一些trick的手段来实现并行的效果(例如借助apache或者nginx服务器等,或者fork一个子进程,或者直接动态生成多个PHP脚本多进程运行),但是无论从代码结构上,还是从使用的复杂程度上,用起来都不是那么顺手。还听说过一个 pthreads 的PHP的扩展,这是一个真正能够实现PHP多线程的扩展,看github上它的介绍:Absolutely, this is not a hack, we don't use forking or any other such nonsense, what you create are honest to goodness posix threads that are completely compatible with PHP and safe ... this is true multi-threading :) 扯远了,PHP的内容在本文中不再赘述,既然决定尝试一下Python的采集,同时一定要学习一下Python的多线程知识的。以前一直听各种大牛们将Python有多么多么好用,不真正用一次试试,自己也没法明确Python具体的优势在哪,处理哪些问题用Python合适。

Python性能提升小技巧

独自空忆成欢 提交于 2020-01-04 03:42:33
第一部分 1-使用内建函数: 你可以用Python写出高效的代码,但很难击败内建函数. 经查证. 他们非常快速 2-使用 join() 连接字符串. 你可以使用 + 来连接字符串. 但由于string在Python中是不可变的,每一个 + 操作都会创建一个新的字符串并复制旧内容. 常见用法是使用Python的数组模块单个的修改字符;当完成的时候,使用 join() 函数创建最终字符串. >>> #This is good to glue a large number of strings >>> for chunk in input(): >>> my_string.join(chunk) 3-使用Python多重赋值,交换变量 这在Python中即优雅又快速: >>> x, y = y, x 这样很慢: >>> temp = x >>> x = y >>> y = temp 4-尽量使用局部变量 Python 检索局部变量比检索全局变量快. 这意味着,避免 "global" 关键字. 5-尽量使用 in 使用 in 关键字. 简洁而快速. >>> for key in sequence: >>> print “found” 6-使用延迟加载加速 將 import 声明移入函数中,仅在需要的时候导入. 换句话说,如果某些模块不需马上使用,稍后导入他们. 例如

Python内存:一行代码减少一半内存占用

一笑奈何 提交于 2020-01-04 00:48:02
我们能强制解释器来指定类的列表对象使用__slots__命令: 把这个看完基本上就理解了 通过简单地添加元素,创建一个100,000的数组,并查看内存消耗: data = []for p in range(100000):data.append(DataItem("Alex", 42, "middle of nowhere"))snapshot = tracemalloc.take_snapshot()top_stats = snapshot.statistics('lineno')total = sum(stat.size forstatin top_stats)print("Total allocated size: %.1f MB" % (total / (1024*1024))) 我们不使用__slots__占用内存16.8MB,使用时占用6.9MB。这个操作当然不是最好的,但是确实代码改变的最小的。(Not 7 times of course, but it’s not bad at all, considering that the code change was minimal.) 现在的缺点。激活__slots__禁止所有元素的创建,包括__dict__,这意味着,例如,一下代码将结构转换成json将不运行: deftoJSON(self):return json

Python-控制语句及函数

有些话、适合烂在心里 提交于 2020-01-04 00:32:27
if-elif-else for while 函数 函数定义 空函数 pass 返回多个值 可变参数 * 关键字参数 ** 控制语句 if - elif - else 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用 if 语句实现: 1234 age = 20if age >= 18: print('your age is', age) print('adult') 根据Python的缩进规则,如果 if 语句判断是 True ,就把缩进的两行print语句执行了,否则,什么也不做。 也可以给 if 添加一个 else 语句,意思是,如果 if 判断是 False ,不要执行 if 的内容,去把 else 执行了: 1234567 age = 3if age >= 18: print('your age is', age) print('adult')else: print('your age is', age) print('teenager') 注意不要少写了冒号 : 。 当然上面的判断是很粗略的,完全可以用 elif 做更细致的判断: 1234567 age = 3if age >= 18: print('adult')elif age >= 6: print('teenager')else: print('kid') elif 是 else if