3-6如何在一个for语句中迭代多个可迭代对象
1、并行迭代
迭代元组可以进行拆包迭代。
>>> zip([1,2,3,4],('a','b','c','d'))
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')] >>> zip([1,2,3,4],('a','b','c')) #当元素个数不一致时,以少的为准
[(1, 'a'), (2, 'b'), (3, 'c')] >>> zip([1,2,3,4],('a','b','c','d'),"")
[(1, 'a', ''), (2, 'b', ''), (3, 'c', ''), (4, 'd', '')] >>> zip([1,2,3,4],('a','b','c'),"")
[(1, 'a', ''), (2, 'b', ''), (3, 'c', '')]
实现并行迭代例子实现
(1)生成三科成绩的3个列表
>>> from random import randint
>>> math = [randint(60,100) for _ in xrange(40)]
>>> english = [randint(60,100) for _ in xrange(40)]
>>> chinese = [randint(60,100) for _ in xrange(40)]
(2)由zip()函数将三科成绩的3个列表,组成一个元组。迭代元组可以进行拆包迭代
>>> for m,e,c in zip(math,english,chinese):
print (m+e+c),
输出结果:285 234 207 204 272 268 234 280 241 232 202 241 236 262 231 206 238 246 236 224 254 248 258 234 246 227 216 240 216 214 224 250 222 228 223 248 252 201 265 192
2、串行迭代
>>> from itertools import chain
>>> help(chain)
Help on class chain in module itertools: class chain(__builtin__.object)
| chain(*iterables) --> chain object
|
| Return a chain object whose .next() method returns elements from the
| first iterable until it is exhausted, then elements from the next
| iterable, until all of the iterables are exhausted.
|
| Methods defined here:
|
| __getattribute__(...)
| x.__getattribute__('name') <==> x.name
|
| __iter__(...)
| x.__iter__() <==> iter(x)
|
| from_iterable(...)
| chain.from_iterable(iterable) --> chain object
|
| Alternate chain() constructor taking a single iterable argument
| that evaluates lazily.
|
| next(...)
| x.next() -> the next value, or raise StopIteration
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __new__ = <built-in method __new__ of type object>
| T.__new__(S, ...) -> a new object with type S, a subtype of T
help(chain)
>>> for x in chain([1,2,3,4],"abc"):
print x,
输出结果:1 2 3 4 a b c
串行迭代例子实现
(1)生成四个班级的学习的成绩列表,每班的人数不同
>>> from random import randint
>>> e1= [randint(60,100) for _ in xrange(40)]
>>> e2= [randint(60,100) for _ in xrange(46)]
>>> e3= [randint(60,100) for _ in xrange(50)]
>>> e4= [randint(60,100) for _ in xrange(40)]
(2)串行对各个班级进行迭代,判断每个学生成绩,大于90的将人数加1
>>> count = 0
>>> for x in chain(e1,e2,e3,e4):
if x>90:
count +=1 >>> count
输出结果:49
3-6如何在一个for语句中迭代多个可迭代对象的更多相关文章
- python迭代-如何在一个for语句中迭代多个可迭代对象
如何在一个for语句中迭代多个可迭代对象 问题举例 (1)某班学生期末考试成绩,语文,数学,英语分别存储在3个列表中,同时迭代三个列表,计算每个学生的总分 (2)某年级有4个班,某次考试每班英语成绩分 ...
- 如何在一个for语句中迭代多个对象(2.7)
如何在一个for语句中迭代多个对象 总结: 并行迭代使用zip(l1, l2, l3) 每次迭代从3个列表里各取一个数据 串行迭代使用itertools.chain(l1, l2, l3) 相当于把3 ...
- 8、如何实现可迭代对象和迭代器对象 9、如何使用生成器函数实现可迭代对象 10、如何进行反向迭代以及如何实现反向迭代 11、如何对迭代器做切片操作 12、如何在一个for语句中迭代多个可迭代对象
8.如何实现可迭代对象和迭代器对象 PS:注意重载Iterator方法的时候,需要和原来的方法名一样,否则创建实例时会报错 from collections import Iterator,Itera ...
- mysql 更新 语句中 的 safe_mode
在mysql5中,可以设置safe mode,比如在一个更新语句中UPDATE table_name SET bDeleted=0;执行时会错误,报:You are using safe update ...
- SQL语句中的select高级用法
#转载请联系 为了更好的了解下面的知识点,我们先创建两张表并插入数据. # 学生表 +----+-----------+------+--------+--------+--------+------ ...
- mybatis的xml中sql语句中in的写法(迭代遍历)
这里使用 foreach标签 <foreach item="item" collection="listTag" index="index&q ...
- 问题13:如何在for语句中迭代多个可迭代的对象
from random import randint a1 = [randint(10, 50) for _ in range(5)] a2 = [randint(10, 50) for _ in r ...
- MySQL 如何在一个语句中更新一个数值后返回该值 -- 自增长种子竞态问题处理
什么是竞态问题? 假设有一个计数器,首先当前值自增长,然后获取到自增长之后的当前值.自增长后的值有可能被有些操作用来当做唯一性标识,因此并发的操作不能允许取得相同的值. 为什么不能使用使用UPDATE ...
- python_如何在一个for循环中迭代多个可迭代对象?
案例: 某班学生期末考试成绩,语文.数学.英语分别存储在3个列表中,同时迭代三个列表.,计算每个学生的总分(并行) 某年级有4个班,某次英语成绩分别记录在4个列表中,依次迭代每个列表,统计全年级高于9 ...
随机推荐
- JAVA支持HTTP断点续传
第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname = ...
- Shell中Bash的基本功能(二)
1 历史命令 1)历史命令的查看[root@localhost ~]# history [选项] [历史命令保存文件]选项:-c: 清空历史命令-w: 把缓存中的历史命令写入历史命令保存文件.如果不手 ...
- 序列式容器————array
目录 介绍 1 构造函数 2 fill() 3 元素的获取 4 size() 5 empty() 6 front() 7 back() 8 get<n> 9 迭代器(待补充) 10 元素的 ...
- prometheus-pushgateway安装
背景 当prometheus的server与target不在同一网段网络不通,无法直接拉取target数据,需要使用pushgateway作为数据中转点. 弊端 将多个节点数据汇总到 pushgate ...
- Vue中 v-bind和v-on 缩写
v-bind 缩写 <!-- 完整语法 --> <a v-bind:href="url">...</a> <!-- 缩写 --> & ...
- hibernate一对一单项关联映射
一.主键关联 1.两个实体对象的主键一样,以表明它们之间的一一对应关系: 2.不需要多余的外键字段来维护关系,仅通过主键来关联,即Person的主键要依赖IdCard的主键,他们共用一个主键值. Pe ...
- input绑定事件
<input type="text" oninput="functionName()">
- webpack前置知识2(JavaScript项目初始化)
所有的JavaScript项目都是在终端输入npm init -y进行项目初始化,如果要自定义项目规则,去掉 -y 参数. vscode终端快捷键ctrl+` 初始化 运行上述命令后,项目内会新建一个 ...
- 各种sort排序总结
冒泡排序 选择排序 插入排序
- 代码编译时JDK版本和运行时JDK版本不一致启动项目报错
java编译: java编译就是.java文件变成.class文件的过程,这个过程一般在我们常用的编译器中进行,例如Ecliplse和IDEA等:下面以IDEA举例: 执行上述编译使用的JDK版本就是 ...