python for循环

深入理解Python中的生成器

一笑奈何 提交于 2019-12-20 18:11:55
生成器(generator)概念 生成器不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束。 生成器语法 生成器表达式: 通列表解析语法,只不过把列表解析的[]换成() 生成器表达式能做的事情列表解析基本都能处理,只不过在需要处理的序列比较大时,列表解析比较费内存。 >>> gen = (x**2 for x in range(5)) >>> gen <generator object <genexpr> at 0x0000000002FB7B40> >>> for g in gen: ... print(g, end='-') ... 0-1-4-9-16- >>> for x in [0,1,2,3,4,5]: ... print(x, end='-') ... 0-1-2-3-4-5- 生成器函数: 在函数中如果出现了yield关键字,那么该函数就不再是普通函数,而是生成器函数。 但是生成器函数可以生产一个无线的序列,这样列表根本没有办法进行处理。 yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator。 下面为一个可以无穷生产奇数的生成器函数。 def odd(): n=1 while True:

Python的可迭代对象、迭代器和生成器

痞子三分冷 提交于 2019-12-20 17:32:10
前言   在学习Python语言,不可避免遇到各种绕口的概念,比如可迭代对象、迭代器和生成器,新手看了第一印象就是一脸懵。为此,本文详细介绍和解释这些概念,让新手一看就会。   回顾Python中的数据存储结构,Python是用容器来存储数据,比如:list、dict、tuple、strset…等等,当数据量不大的时候用这些存储没什么问题,当数据量特别大甚至是无限的时候,就不能使用这些容器来存储了,于是Python有一种机制专门解决这种问题。 一、可迭代对象(iterable)和迭代器(iterator) 1.1 概念介绍   通俗点讲,可迭代对象就是可以产生迭代器的对象,所谓迭代器就像一个懒加载的工厂,本身不存储数据,只有你向它索要的时候临时给你生成数据。下面用一个例子来解释: >> > x = [ 1 , 2 , 3 ] >> > y = iter ( x ) >> > z = iter ( x ) >> > next ( y ) 1 >> > next ( y ) 2 >> > next ( z ) 1 >> > type ( x ) < class 'list' > >> > type ( y ) < class 'list_iterator' >   在这个例子中,x是一个list对象,是一个可迭代对象,通过iter()函数生成x的迭代器y,那么只有在调用next(

Python学习笔记——Python起步

被刻印的时光 ゝ 提交于 2019-12-20 14:44:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本章将对 Python 的主要特性做一个快速介绍,这样你就可以借助以前的编程经验识别出熟悉的语言结构,并立刻将 Python 付诸使用。虽然细节内容会在后续的章节中逐一讲解,但是对整体的了解可以让你迅速融入到 Python 中。在Python解释器所有的交互示例中, 你会看到 Python 的主提示符( >>> )和次提示符( ... )。主提示符是解释器告诉你它在等待你输入下一个语句,次提示符告诉你解释器正在等待你输入当前语句的其它部分。Python 有两种主要的方式来完成你的要求:语句和表达式(函数、算术表达式等)。语句使用关键字来组成命令,类似告诉解释器一个命令。你告诉 Python 做什么,它就为你做什么,语句可以有输出,也可以没有输出。表达式没有关键字,它们可以是使用数学运算符构成的算术表达式,也可以是使用括号调用的函数。它们可以接受用户输入,也可以不接受用户输入,有些会有输出,有些则没有。(在 Python 中未指定返回值的函数会自动返回 None, 等价于 NULL) 程序输出,print 语句 有些语言, 比如 C, 通过函数输出数据到屏幕,例如函数 printf()。然而在 Python 和大多数解释执行的脚本语言,使用语句进行输出。很多的 shell 脚本语言使用 echo

Python 写随机数

百般思念 提交于 2019-12-20 11:09:45
随机输入8个数,将这8个数放入列表中,打印列表中最大值和最小值 (请使用不同的方式实现,最少2种不同的方式) #使用循环取值支持输入,并检测异常,冒泡输入8位 list_1 = list() try: for i in range(8): num = eval(input('请输入数字')) list_1.append(num) print(list_1) c = list_1[0] for i in list_1: if c!=i: if c<i: c=i list_max=i for b in list_1: if b!=c: if c>b: c=b list_min=c print(list_max) print(list_min) except Exception as e: print(e) 来源: CSDN 作者: 球球耶 链接: https://blog.csdn.net/zs_pnzzz/article/details/103627437

python 中的字符串详解

自闭症网瘾萝莉.ら 提交于 2019-12-20 10:28:43
##1. 字符串的定义 a = 'westos' b = "westos's" c = 'what\'s' d = "" " 用户管理系统 1.添加用户 2.擅长用户 3.显示用户 ..... " "" 2.字符串的特性 s = 'hello' # 索引:0 1 2 3 4 索引从0开始 print ( s [ 0 ] ) print ( s [ 4 ] ) print ( s [ -1 ] ) # 拿出最后一个字符 # 切片 s[start:stop:step] 从start开始到stop-1结束 step:步长 print ( s [ 0:3 ] ) print ( s [ 0:4:2 ] ) print ( s [ : ] ) #显示全部的字符 print ( s [ :3 ] ) # 显示前3个字符 print ( s [ ::-1 ] ) # 字符串的反转 print ( s [ 2: ] ) #除了前2个字符之外的其他字符 # 重复 print ( s * 10 ) # 连接 print ( 'hello ' + 'python' ) # 成员操作符 print ( 'he' in s ) print ( 'aa' in s ) print ( 'he' not in s ) # for循环遍历 for i in s: print ( i,end = '' ) 3

Python快速学习04:循环 & 函数

半腔热情 提交于 2019-12-20 09:33:39
前言   系列文章: [传送门]   也就今天认识了 LC ,很开心。      本文目录     循环       for       while       中断     函数       函数定义       函数调用 for循环     Python 中的for 循环象shell 脚本里的foreach 迭代。Python 中的for 接受 可迭代对象 (例如 序列 )作为其参数,每次迭代其中一个元素。 基本构造 for 元素 in 序列: statement 例子 for a in [3,4.4,'life']: print (a) #这个循环就是每次从表[3,4.4,'life'] 中取出一个元素,然后将这个元素赋值给a,之后执行隶属于for的操作(print)。 介绍一个新的Python函数range() idx = range(5) print (idx) #输出[0,1,2,3,4] 因此,可以再for中运用range() for a in range(10): print a**2 while循环 基本构造 while 条件: statement #while会不停地循环执行隶属于它的语句, 直到条件为假 (False) 例子 while i < 10: print (i) i = i + 1 中断循环   continue # 在循环的某一次执行中

Python 跳出多重循环

江枫思渺然 提交于 2019-12-20 07:24:19
Python 本身没有“break n” 和“goto” 的语法,这也造成了Python 难以跳出多层(特定层数)循环。下面是几个跳出多层(特定层数)循环的tip。 1、自定义异常 class getoutofloop(Exception): pass try: for i in range(5): for j in range(5): for k in range(5): if i == j == k == 3: raise getoutofloop() else: print i, '----', j, '----', k except getoutofloop: pass 2、封装为函数return def test(): for i in range(5): for j in range(5): for k in range(5): if i == j == k == 3: return else: print i, '----', j, '----', k test() 3、for ... else ... 用法 上面的两种都是只能跳出多层而不能跳出特定层数的循环,接下来的这个正是为了跳出特定层数的循环。 for i in range(5): for j in range(5): for k in range(5): if i == j == k == 3: break

Python3 循环语句

瘦欲@ 提交于 2019-12-20 02:49:37
Python中的循环语句有 for 和 while,与C/C++的循环语句略有不同: Python循环语句的控制结构图如下所示: while 循环 Python中while语句的一般形式: while 判断条件: 语句 执行 Gif 演示: 同样需要注意冒号和缩进。另外,在 Python 中没有 do..while 循环。 以下实例使用了 while 来计算 1 到 100 的总和: 实例 #!/usr/bin/env python3 n = 100 sum = 0 counter = 1 while counter <= n: sum = sum + counter += 1 print("1 到 %d 之和为: %d" % (n,sum))    执行结果如下: 1 到 100 之和为: 5050 无限循环 我们可以通过设置条件表达式永远不为 false 来实现无限循环,实例如下: 实例 #!/usr/bin/python3 var = 1 while var == 1 : # 表达式永远为 true num = int(input("输入一个数字 :")) print ("你输入的数字是: ", num) print ("Good bye!")    执行以上脚本,输出结果如下: 输入一个数字 :5 你输入的数字是: 5 输入一个数字 :    你可以使用 CTRL+C

Python中zip()函数用法举例

非 Y 不嫁゛ 提交于 2019-12-20 00:20:41
定义: zip([iterable, ...]) zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压),看下面的例子就明白了: 1 2 3 4 5 6 7 8 9 >>> a = [1,2,3] >>> b = [4,5,6] >>> c = [4,5,6,7,8] >>> zipped = zip(a,b) [(1, 4), (2, 5), (3, 6)] >>> zip(a,c) [(1, 4), (2, 5), (3, 6)] >>> zip(*zipped) [(1, 2, 3), (4, 5, 6)] 对于这个并不是很常用函数,下面举几个例子说明它的用法: * 二维矩阵变换(矩阵的行列互换) 比如我们有一个由列表描述的二维矩阵 a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 通过python列表推导的方法,我们也能轻易完成这个任务 1 2 print [ [row[col] for row in a] for col in range(len(a[0]))] [[1, 4, 7], [2, 5, 8],

关于Python中的yield

老子叫甜甜 提交于 2019-12-19 19:15:54
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生成器(constructor)。 一、迭代器(iterator) 在Python中,for循环可以用于Python中的任何类型,包括列表、元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前进到下一结果,而在一系列结果的末尾是,则会引发StopIteration。任何这类的对象在Python中都可以用for循环或其他遍历工具迭代,迭代工具内部会在每次迭代时调用next方法,并且捕捉StopIteration异常来确定何时离开。 使用迭代器一个显而易见的好处就是:每次只从对象中读取一条数据,不会造成内存的过大开销。 比如要逐行读取一个文件的内容,利用readlines()方法,我们可以这么写: 1 2 line .: line 这样虽然可以工作,但不是最好的方法。因为他实际上是把文件一次加载到内存中,然后逐行打印。当文件很大时,这个方法的内存开销就很大了。 利用file的迭代器,我们可以这样写: 1 2 line : line 这是最简单也是运行速度最快的写法,他并没显式的读取文件,而是利用迭代器每次读取下一行。 二、生成器