Python迭代器与格式化
三元运算
对if…else判断的简写
>>> age = 18
>>> res = "You are so young!" if age < 18 else "You are so eld!"
### 如果满足条件就返回前面的内容,不满足就返回后面的内容
>>> print(res)
You are so eld!
正则表达式
>>> test_list = [1,2,3,4,5]
>>> result_list = [i*i for i in test_list]
>>> print(result_list)
[1, 4, 9, 16, 25]
>>> result_list = [i**i for i in test_list if i < 3] ##还可以为正则表达式添加一个判断条件
>>> print(result_list)
[1, 4]
迭代器和可迭代对象
迭代器对象要求支持迭代器协议的对象,在Python中,支持迭代器协议就是实现对象的__iter__()和next()方法。其中__iter__()方法返回迭代器对象本身;next()方法返回容器的下一个元素,在结尾时引发StopIteration异常
#############for循环的本质#############
>>> test_list = [1,2,3,4]
>>> iter_list = test_list.__iter__() ##通过这种方法把iter_list变为迭代器
>>> print(type(iter_list))
<class 'list_iterator'>
>>> print(iter_list.__next__()) ##用__next__()方法实现
1
>>> next(iter_list) ##用next()方法实现
2
>>> next(iter_list)
3
>>> next(iter_list)
4
>>> next(iter_list)
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
next(iter_list)
StopIteration ##当遍历完之后就会报错
可迭代对象可以分为,
第一类是集合数据类型
第二类是generator,包括生成器和带yield的函数
生成器
在 Python 中,使用了 yield 的函数被称为生成器(generator)
>>> people = ("People_%s" %i for i in range(10)) ##写在()里的就叫做正则表达式
>>> next(people)
'People_0'
>>> next(people)
'People_1'
>>> next(people)
'People_2'
>>> next(people)
'People_3'
>>> next(people)
'People_4'
>>> next(people)
'People_5'
>>> next(people)
'People_6'
>>> next(people)
'People_7'
>>> next(people)
'People_8'
>>> next(people)
'People_9'
>>> next(people)
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
next(people)
StopIteration
格式化
%[(name)][flags][width].[precision]typecode方式
- (name) 为命名
- flags 可以有 +,-,' '或 0.+ 表示右对齐.- 表示左对齐。' ' 为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0 表示使用 0 填充
- width 表示显示宽度
- precision 表示小数点后精度
常用类型码 | 作用 |
---|---|
%s | 字符串 (采用str()的显示) |
%d | 十进制整数 |
%i | 十进制整数 |
%f | 浮点数 |
%% | 字符“%” |
>>> print("%.2f" %2.13414)
2.13
>>> print("I like to %s" %"read")
I like to read
format(self, *args, **kwargs)
数字 | 格式 | 输出 | 描述 |
---|---|---|---|
3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 |
3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后两位 |
-1 | {:+.2f} | -1.00 | 带符号保留小数点后两位 |
2.71828 | {:.0f} | 3 | 不带小数 |
5 | {:0>2d} | 05 | 数字补零 (填充左边, 宽度为2) |
5 | {:x<4d} | 5xxx | 数字补x (填充右边, 宽度为4) |
10 | {:x<4d} | 10xx | 数字补x (填充右边, 宽度为4) |
1000000 | {:,} | 1,000,000 | 以逗号分隔的数字格式 |
0.25 | {:.2%} | 25.00% | 百分比格式 |
1000000000 | {:.2e} | 1.00e+09 | 指数记法 |
13 | {:10d} | 13 | 右对齐 (默认, 宽度为10) |
13 | {:<10d} | 13 | 左对齐 (宽度为10) |
13 | {:^10d} | 13 | 中间对齐 (宽度为10) |
>>> print("I am {name} and {age} years old, from {hometown}".format(name = "Hermaeus", age = 19, hometown = "meishan"))
I am Hermaeus and 19 years old, from meishan
>>> print("I an {0} and {1} years old, from {2}".format( "Hermaeus",19, "meishan"))
I an Hermaeus and 19 years old, from meishan
>>> print("I am {name}, {age} years old!".format(**{"name":"Hermaeus","age":19}))
I am Hermaeus, 19 years old!
Python迭代器与格式化的更多相关文章
- python(七)字符串格式化、生成器与迭代器
字符串格式化 Python的字符串格式化有两种方式:百分号方式.format方式 1.百分号的方式 %[(name)][flags][width].[precision]typecode (name) ...
- Python迭代器,可迭代对象,生成器
迭代器 迭代器(iterator)有时又称游标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如链表或阵列)上遍访的界面,设计人员无需关心容器物件的内存分配的实现细节. ...
- Python基础-字符串格式化_百分号方式_format方式
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- python迭代器与iter()函数实例教程
python迭代器与iter()函数实例教程 发布时间:2014-07-16编辑:脚本学堂 本文介绍了python迭代器与iter()函数的用法,Python 的迭代无缝地支持序列对象,而且它还允许程 ...
- Python 的字符串格式化和颜色控制
(部分内容源自武神博客和网络收集.) Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两 ...
- Python 迭代器和列表解析
Python 迭代器和列表解析 1)迭代器 一种特殊的数据结构,以对象形式存在 >>> i1 = l1.__iter__() >>> i1 = iter(l1) 可 ...
- Python迭代器,生成器--精华中的精华
1. 迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大 ...
- Python:字符串格式化
Python中提供了多种格式化字符串的方式,遇到一个项目,在一个文件中,就用了至少两种方式.特别是在使用Log时,更让人迷惑. 因此特地花时间来了解一下Python中字符串格式化的几种方式: # -* ...
- Python 3.x 格式化输出字符串 % & format 笔记
Python 3.x 格式化输出字符串 % & format 笔记 python格式化字符串有%和{}两种 字符串格式控制符. 字符串输入数据格式类型(%格式操作符号) %%百分号标记 %c字 ...
随机推荐
- 在Django中接收文件并存储
首先是一个views函数的例子 def get_user_profiles(request): if request.method == 'POST': myFile = request.FILES. ...
- LeetCode算法题-Find All Anagrams in a String(Java实现)
这是悦乐书的第228次更新,第240篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第95题(顺位题号是438).给定一个字符串s和一个非空字符串p,找到s中p的字谜的所有 ...
- Winform知识汇总之多次绑定DataGridView的DataSource会报错 NullReferenceExcepti
最近做了一个winform的项目,数据绑定在datagridview中,datagridview中的数据需要删除,分页,更新等之类的操作,所以就涉及到了datagridview的重新绑定问题,而且这些 ...
- n2
"express-ws": "^3.0.0", "devDependencies": { "socket.io": ...
- ubuntu集群下ssh配置总结
最重要的前提就是:集群中的所有机器的用户名和用户组必须一样 一般做法都是在每台机器上新建用户组和用户名. 比如:sudo addgroup sparks 新建用户组sparks: sudo addus ...
- nuxt拦截IE浏览器
需求场景 判断浏览器类型,让譬如IE的低版本浏览器跳转到指定提示浏览器升级页面. 难点分析 使用过的都知道,nuxt没有暴露主入口页面也就是index.html啊,我们以前常用的IE条件判断没地方写. ...
- 寒假训练——搜索——C - Robot
The Robot Moving Institute is using a robot in their local store to transport different items. Of co ...
- Unicode与UTF-8关系
Unicode字符集合 Unicode 也称为 UCS(Universal Coded Character Set:国际编码字符集合) 是一个字符集合. 对世界上大部分的文字系统进行了整理,编码,使电 ...
- UVA1613-K-Graph Oddity(贪心)
Problem UVA1613-K-Graph Oddity Accept: 108 Submit: 884Time Limit: 3000 mSec Problem Description Inp ...
- [matlab] 3.矩阵
matlab矩阵运算很强大 ,几乎所有涉及矩阵运算的命令都有. 事实上,matlab里面所有变量都是以矩阵的形式保存下来的. %% >> x=[1:2.1:10] x = 1.0000 ...