python 双重循环处理
序⾔
在开发过程中经常会遇到对可迭代对象进⾏for循环的操作,甚⾄双重编写for循环进⽽找到匹配条件的数据,
某些逻辑上这些操作往往⽆法避免,但可以通过⼀些⽅法使得代码不那么冗余和提升代码效率
循环的情况
1、循环⽐较
双重循环获取对象并进⾏⽐较
>>> a1 = [1, 3, 5, 2, 10]>>> a2 = [5, 6, 1, 8]>>> for i in a1:for j in a2:if i < j:print(i,j)...(1, 5)(1, 6)(1, 8)(3, 5)(3, 6)(3, 8)(5, 6)(5, 8)(2, 5)(2, 6)(2, 8)
复制代码
可以通过itertools包对此种循环进⾏优化,不仅使得代码复杂度降低,也提升了执⾏速度
a1 = [1, 3, 5, 2, 10]a2 = [5, 6, 1, 8]@count_time
def base_func():for i in a1:for j in a2:if i < j:print(i, j)@count_time
def itertools_func():for i in itertools.product(a1, a2):if i[0] < i[1]:print(i)if __name__ == '__main__':base_func()itertools_func()# 8.106231689453125e-06
# 4.053115844726562e-06
复制代码
2、循环展开
将复杂嵌套数据内容展开,可以使⽤推导式进⾏实现
@count_timedef base_func():result = []for a in a1:for j in a:result.append(j)@count_time
def itertools_func():value = [i for value in a1 for i in value]if __name__ == '__main__':print(base_func())print(itertools_func())# 8.106231689453125e-06
# 4.053115844726562e-06
复制代码
3、已知集合⼤⼩
在已知集合⼤致数量进⾏双重for循环处理数据时,应该采⽤外⼩内⼤的原则,把⼤循环写在⾥⾯,⼩循环写在外边
@count_time
def outer_func():for i in range(10):for j in range(10000): if i == j:print(i, j)@count_time
def inner_func():for i in range(10000):for j in range(10):if i == j:print(i, j)# 0.003239154815673828
# 0.004751205444335937
python 双重循环处理相关推荐
- python当型循环_对python while循环和双重循环的实例详解
废话不多说,直接上代码吧! #python中,while语句用于循环执行程序,即在某个条件下,循环执行某段程序,以处理需要重复处理的相同任务. #while是"当型"循环结构. i ...
- [转载] Python基础:用Python统计列表中每个单词出现的次数(split 的使用,for双重循环)
参考链接: Python | 抓取网页并获得最常用单词的程序 如何用Python统计含多个字符串的列表中每个单词出现的次数? 要从多个字符窜中统计次数的话,我们先来看一个简单的例子: 先从一个字符串中 ...
- python用双重循环输出菱形_Python 使用双重循环打印图形菱形操作
如下所示: a = int(input("请输入菱形行数:")) m = a #空格 d = a #倒三角 for i in range(1, a + 1): # 先打印正三角 p ...
- python中for循环打印菱形_Python 使用双重循环打印图形菱形操作
如下所示: a = int(input("请输入菱形行数:")) m = a #空格 d = a #倒三角 for i in range(1, a + 1): # 先打印正三角 p ...
- python用while打印菱形_Python 使用双重循环打印图形菱形操作
如下所示: a = int(input("请输入菱形行数:")) m = a #空格 d = a #倒三角 for i in range(1, a + 1): # 先打印正三角 p ...
- python无限循环和遍历循环,python中什么叫遍历
python循环语句是什么? python 循环语句:while 判断条件(condition):执行语句(statements)--执行语句可以是单个语句或语句块. 判断条件可以是任何表达式,任何非 ...
- 为什么双层循环 冒泡排序_冒泡排序的双重循环理解
主要说一下冒泡排序的一些关键地方的个人理解,比如算法思想,两个循环的作用意义,中间循环变量范围的确定等. 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面 ...
- python无限循环条件循环_Python - 条件控制、循环语句 - 第十二天
Python 条件控制.循环语句 end 关键字 关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符,实例如下: Python 条件语句是通过一条或多条语句的执行结果(True 或 ...
- Python编写循环的两个建议 | 鹅厂实战
作者 | piglei(腾讯高级工程师) 转载自腾讯技术工程知乎专栏 循环是一种常用的程序控制结构.我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行.而" ...
最新文章
- 笑了,面试官问我知不知道异步编程的Future。
- 三层之抽象工厂加反射实例
- matlab生成图像路径列表和标签,打乱顺序
- web前端——transform变形 旋转角度正负的判断
- location.href属于重定向还是转发_servlet2 单元测试、转发、重定向
- OpenShift 4 - DevSecOps (1) - 安装 DevOps 环境
- BZOJ1419: Red is good
- hiprint使用初体验,模板设计经验分享
- 中点坐标公式 矩形_2019南充第16题——平面直角坐标系、矩形、K字型相似、运动与最值...
- discuz2.0升级后不能自动跳转问题
- ubuntu常用软件安装集合:360浏览器、QQ--持续更新
- 用户故事与敏捷方法—估算用户故事
- 6120:学长的沙包
- 拟物化设计与扁平化设计
- 汽车控制器自研AUTOSAR开发工具链需要哪些?
- mysql oracle minus_Oracle Minus关键字
- Android快速开发之appBase——(1).appBase介绍
- PHP Imagick发光文字
- 安装多个版本号jdk后java -version不改变的问题解决
- 全球及中国集成电路(IC)制造行业运行前景与发展规划建议报告2022版