博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python的点滴笔记之:推导式
阅读量:6712 次
发布时间:2019-06-25

本文共 1033 字,大约阅读时间需要 3 分钟。

  hot3.png

1. 推导式通常可转换为for循环

    简单的for循环通常可以使用推导式来替换:

>>> [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y][(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
    它实际上等价于:
>>> combs = []>>> for x in [1, 2, 3]:	for y in [3, 1, 4]:		if x != y:			combs.append((x, y))			>>> combs[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

2. 推导式往往可完成复杂的for循环表示(不推荐)

    以下代码将逆转一个矩阵:

>>> matrix = [	[1, 2, 3, 4],	[5, 6, 7, 8],	[9, 10, 11, 12],	]>>> [[row[i] for row in matrix] for i in range(4)][[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
它可以先被分解为:

>>> transposed = []>>> for i in range(4):	transposed.append([row[i] for row in matrix])	>>> transposed[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
进一步被分解为:

>>> transposed = []>>> for i in range(4):	transposed_row = []	for row in matrix:		transposed_row.append(row[i])	transposed.append(transposed_row)	>>> transposed[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
    但实际上用zip函数也可以达到同样的效果:

>>> zip(*matrix)[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]

转载于:https://my.oschina.net/voler/blog/379730

你可能感兴趣的文章
三大范式和五大约束
查看>>
vmware DELL定制
查看>>
&nb
查看>>
lombok的builder设置默认值的问题
查看>>
lvs的nat模式
查看>>
Java 数组 之 一维数组 追加 元素
查看>>
Keil uVision4复杂运用教程
查看>>
OSPF 基本配置
查看>>
猜拳游戏
查看>>
MySQL学习笔记(三)
查看>>
磁盘和文件系统管理
查看>>
Kafka connect介绍、部署及开发
查看>>
运维知识总结1
查看>>
rsync 简明教程
查看>>
使用KickStart进行CentOS7.4 的自动部署安装
查看>>
javas cript入门要了解的知识和书籍
查看>>
DDoS***进阶 混合***
查看>>
httpd: Could not reliably determine the server's fully
查看>>
php使用composer报zlib_decode():data error……
查看>>
\A \Z ^ $ 在Ruby Regular Expression 中的区别
查看>>