python for循环

python的iterable、iterator、generator

人盡茶涼 提交于 2019-12-05 04:34:22
可迭代对象iterable 一个拥有 __iter__ 方法的对象,可以使用for循环遍历 可迭代对象有: str 、 list 、 tuple 、 dict 、 set 、 iterator 、 generator 、 file # 判断一个对象是否可迭代 >>> from collections import Iterable >>> isinstance('abc', Iterable) True >>> isinstance(100, Iterable) False 迭代器 一个实现了 __iter__ 方法和 __next__ 方法的对象,就是迭代器 迭代器是可以被 next() 函数调用并不断返回下一个值的对象 iter() 函数通过调用可迭代对象的 __iter__() 方法,获取该对象的迭代器,然后对获取到的迭代器不断使用 next() 函数来获取下一条数据 迭代器有: generator 、 iter(iterable) >>> from collections import Iterator >>> isinstance([1,2], Iterator) # 列表不是迭代器 False >>> isinstance((1,2), Iterator) False >>> isinstance([i for i in range(10)], Iterator)

在RPA中优雅地写Python代码(一)

落花浮王杯 提交于 2019-12-05 04:28:49
人生苦短,我用Python! Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。 在RPA设计中,难免少不了一些简单的代码编写,本文精心筛选了最能展现 Python 语法之精妙的几个知识点,若是能够融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码 B 格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 说if 和 else 才是原配吗?不,你可能不知道,else 是个脚踩两只船的家伙,for 和 else 也是一对,而且是合法的: for i in [1,2,3,4]: print(i) else: print('我是else') 如果在 for 和 else 之间(循环体内)有第三者 if 插足,也不会影响 for 和 else 的关系。因为 for 的级别比 if 高,else 又是一个攀附权贵的家伙,根本不在乎是否有 if,以及是否执行了满足 if 条件的语句。else 的眼里只有 for,只要 for 顺利执行完毕,else 就会屁颠儿屁颠儿地跑一遍: for i in [1,2,3,4]: if i > 2: print(i) else: print('我是else') 当然从缩进就看得出来: 那么,如何拆散 for 和 else 这对冤家呢

一些基础的python小程序

倾然丶 夕夏残阳落幕 提交于 2019-12-05 03:53:19
1.求下列数奇偶分数: list1 = [1,2,3,4,5,6,7,8,9,10] # 先创建两个空列表 jishu = [] oushu = [] # 使用for循环迭代list1一一取出进行判断 for i in list1: # 取出的数除以2的余数等于0加入偶数列表,否则是奇数 if i % 2 == 0: oushu.append(i) else: jishu.append(i) # 打印新列表 print(jishu) print(oushu) 2.求1-100的偶数和: sum = 0 for i in range(0,101): if i % 2 ==0: sum += i print(sum) 3.类和对象 : class Cat: """ 定义一个猫类 """ def __init__(self, name, age, color): self.name = name self.age = age self.color = color print("大家好,我叫{},我现在{}岁,我的毛色是{}".format(self.name, self.age, self.color)) def run(self): print("我会跑步") def sleep(self): print("我会睡觉") def say(self): print("我会叫") a

Python魔力手册读书笔记

老子叫甜甜 提交于 2019-12-05 03:18:47
CH1处理字符串 输入如下代码 1234567891011121314 phone_number = '1386-666-0006'hiding_number = phone_number.replace(phone_number[:9],'*'*9)print(hiding_number)search = '168'num_a = '1386-168-0006'num_b = '1681-222-0006'print(search + ' is at ' +str(num_a.find(search)) + ' to ' + str(num_a.find(search) + len(search)) + ' of num_a')print(search + ' is at ' +str(num_b.find(search)) + ' to ' + str(num_b.find(search) + len(search)) + ' of num_b')print('{} a word she can get what she {} for.'.format('With','came'))print('{preposition} a word she can get what she {verb} for'.format(preposition = 'With',verb =

Python常见的高级特性

廉价感情. 提交于 2019-12-05 03:18:45
Python高级特性(迭代器&生成器等) 正负索引就不提及了,都是比较基本的用法。 1234567891011121314151617181920212223242526272829303132333435363738 a = list(range(11))a[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]a[2:8][2, 3, 4, 5, 6, 7]#负数索引切片a[-4:-2][7, 8]#指定步长切片a[::2][0, 2, 4, 6, 8, 10]>>> a[::-2][10, 8, 6, 4, 2, 0]#列表赋值切片>>> b = [1,2,3,4,5]>>> b[2:3] = [0,0]>>> b[1, 2, 0, 0, 4, 5]>>> b[1:1] = [8,9]>>> b[1, 8, 9, 2, 0, 0, 4, 5]>>> b[1:-1] = []>>> b[1, 5]#用slice()函数切片>>> a = list(range(6))>>> a[0, 1, 2, 3, 4, 5]>>> sa = slice(-3,None)>>> saslice(-3, None, None)>>> a[sa][3, 4, 5] 迭代 基本迭代 给定 list 或 tuple 可以通过 for 循环来遍历,这种遍历称为 迭代 (iteration)

python-迭代器、生成器

牧云@^-^@ 提交于 2019-12-05 03:18:20
生成器属于迭代器 适合迭代器对象:list、dict、tuple、set、str 不适合迭代对象:int、float、bool 迭代器例子 : a = [0,1,2,3] iter (a) # 用 iter ()方法生成迭代对象 print( next (a)) #用 next 来查询,直到超范围 判读对象是否符合迭代例子 : from collections import Iterable a = [0,1,2,3] b = 123 print(isinstance(a, Iterable )) #运用isinstance函数来判断,此结果为True,符合迭代 print(isinstance(a, Iterable )) #同上,此结果为Flase,不符合迭代 生成器例子 : a = (i for i in range(1000000)) #想当与列表生成式的[]改成(),此时a的类型为生成器(generator) print(next(a)) #用next()来查询 函数进化成生成器 :(把return改成yield) 例子: def f(n): for i in range(n): yield i     print('OKOK')a = f(5) #定义一个变量来接受生成器的返回值print(next(a)) #程序运行达到yield后就会停止,不会往下执行

Python学习之函数(多层函数)、re模块的正则匹配--计算复杂加减乘除

…衆ロ難τιáo~ 提交于 2019-12-05 03:13:59
头疼,其实这个程序在我看的视频当中是当做re模块的运用来进行测试的,而到了我这里就成了简化版的了,因为我实在是做吐了,恕小弟无能,只能做简化版的。为何说是简化版呢,因为要求是给的计算式是多层嵌套的小括号“()”,然后计算的时候不能用eval方法,eval是个好东西啊,他能直接得到字符串中的结果,比如eval(“23+34*45/345-34”)=结果,是可以直接给你返回算术式的结果的,如果你自己处理这段字符串的话就要花好多工夫拆解字符串。我的简化版是将多层小括号给分为了小括号“()”、中括号“【】”、大括号“{}”,不允许使用多层相同括号连续嵌套(相应的不允许超过三层,超过三层,小弟无能为力),而我觉得,想要区分不同的层级的小括号“(()())”是需要下功夫用re正则去匹配的,而我这个用是用到正则了,但用的很少,重点全在如何自己写代码实现eval的功能了。 效果图: 另附一张各步骤计算详解 源代码: import redef Get_FuH(As): As = As.replace('--','+') As = As.replace('+-', '+') As = As.replace('/-', '/') As = As.replace('*-', '*') End = [] As = list(As) if (As[1] == '-'): As.pop(1) for i in

Python第四次作业

风流意气都作罢 提交于 2019-12-05 03:12:02
实验要求 实验1:将字符串写入文本文件,然后再读取并输出: 实验2:假设已有一个文本文件sample.txt,将其中第13、14两个字符修改为测试。 实验3、假设文件data.txt中有若干个整数,所有整数之间使用英文逗号分隔,编写程序读写所有整数,将其按升序排序后再写入文本文件data_asc.txt中。 实验4、统计文本文件中最长行的长度和该行的内容。 实验5、根据当前时间创建文件 在指定目录中,批量创建3个文件,文件名为%Y%m%d%H%M%S格式的当前时间(精确到秒)。例如,创建文件的时间为2019年4月18日9点18分38秒,则该文件的文件名为20190418091838.txt。为了防止出现重名的文件,在每建立一个文件后,让线程休眠一秒。 实验六、使用raise语句抛出异常。模拟幼儿园分苹果(每人至少分一个苹果)。输入苹果数量及小朋友数量。编程实现当输入的苹果数量小于小朋友的数量时,应用raise语句抛出一个ValueError异常。并进行异常处理。 代码实现 实验一 file=open(“new.txt”,“w+”)#使用open函数,参数一是文件名,参数二是执行模式,w+代表可读可写,若运行目录下无指定文件则自动新建文件 ls=“hello world” file.write(ls)#file对象的函数之一,用于写入文档字符串,返回字符串长度 file.close(

python map函数(23)

房东的猫 提交于 2019-12-05 03:06:20
截至到目前为止,其实我们已经接触了不少的python内置函数,而map函数也是其中之一,map函数是根据指定函数对指定序列做映射,在开发中使用map函数也是有效提高程序运行效率的办法之一. 一.语法定义 ''' function:函数名 iterable:一个序列或者多个序列,实际上这就是function对应的实参 ''' map(function, iterable, ...) 参数: function :函数名 iterable :一个序列或者多个序列,实际上这就是function对应的实参 返回值 : 返回值是迭代器,注意返回的结果只能迭代一次,如果需要多次使用请提前保存结果并处理。 二.实战练习 1.使用map函数 # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解忧 @Blog(个人博客地址): shuopython.com @WeChat Official Account(微信公众号):猿说python @Github:www.github.com @File:python_map.py @Time:2019/10/7 19:48 @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累! """ def func1(x): # 对序列中的每一个元素乘以10并返回

python基础之四:list、tuple

南楼画角 提交于 2019-12-05 02:52:05
一、列表 list 1 # 列表 2 3 ''' 4 类似str,可以进行切片 5 ''' 6 7 li = ['123', [1, 2, 3], 55, 'we all in ', 'Tom', ''] 8 print(li[0:2]) 9 print(li[::]) 10 print(li[1]) 11 print(li[3:0:-1]) 12 13 # 列表的操作 14 15 ''' 16 一、"增" 17 1、末尾添加元素:append 18 需求:公司的hr要录入人员名单,只要不输入q,就继续输入,否者停止 19 ''' 20 names = [] 21 while 1: 22 name = input("请输入员工名单:").strip() 23 if name.lower() == 'q': 24 break 25 else: 26 names.append(name) 27 print(names) 28 29 ''' 30 2、插入元素:insert 31 ''' 32 li.insert(2, "Beijing") 33 34 ''' 35 3、可迭代的末尾插入 36 ''' 37 li.extend('weid') 38 print(li) 39 40 ''' 41 二、删 42 ''' 43 li.pop() # 默认删除最后一个 44 nam = li