5.1.4. 嵌套的列表推导式
专注于为中小企业提供网站建设、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业滨海新区免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
列表解析中的第一个表达式可以是任何表达式,包括列表解析。
考虑下面有三个长度为 4 的列表组成的 3x4 矩阵:
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]]
像前面看到的,嵌套的列表推导式是对 for 后面的内容进行求值,所以上例就等价于:
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):
... # the following 3 lines implement the nested listcomp
... 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() 函数将会做的更好:
list(zip(*matrix))
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]
我举个简单的例子:
取出含有元素0的所有行
import numpy as np
x = np.array([[1,2,3,4,0],[2,3,4,5,6],[0,1,2,3,4]])
b=[]
for row in x:
for i in row:
if i==0:
b.append(row)
print b
PS G:\Python learning-Q python exbaidu.py
[array([1, 2, 3, 4, 0]), array([0, 1, 2, 3, 4])]
你可以用 print(len(rows1)); print(len(rows2)); print(len(rows3)); print(len(rows4)) 把这4个数组的维数打出来看下,我估计他们维数不同导致的出错。
如何修改?应取这 4 个数组的长度最小一个来产生 range:
min_range = min([len(rows1),len(rows2),len(rows3),len(rows4)])
for i in range(min_range):
.......
这样估计就可正常运行了
1、python中Row binary I/O通常提供对底层操作系统设备或者API的低级访问;
2、Python是一种跨平台的计算机程序设计语言,是一种面向对象的动态类型语言;
3、Python最初被设计用于编写自动化脚本,随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
扩展资料:
在开始之前,计算机将需要Python,但可能不需要下载。首先检查有没有安装Python。看到了一个Python解释器的响应,那么就能在显示窗口中得到一个版本号,通常的版本都可以做到Python的向前兼容。
Python的设计目标之一是让代码具备高度的可阅读性。其设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。
参考资料来源:百度百科-Python
使用pip install openpyxl即可,但是在windows下安装的是2.2.6版本,但是centos自动安装的是4.1版本。
from xlwt import Workbook, Formula
import xlrd
book = Workbook()
sheet1 = book.add_sheet('Sheet 1')
sheet1.write(0,0,10)
sheet1.write(1,0,Formula('A1/B1'))
sheet2 = book.add_sheet('Sheet 2')
row = sheet2.row(0)
row.write(2,Formula("$A$1+$B$1*SUM('ShEEt 1'!$A$1:$b$2)"))
book = xlrd.open_workbook('formula.xls')
sheet = book.sheets()[0]
for i in range(nrows):
print (sheet.cell(i,j).value)
Python
是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。
or:
L, N = 4, 3
for i in xrange(L):
... for j in xrange(L):
... print (0 if N-1 in (i, j) else (i+1)*(j+1)),
... print ''
...
1 2 0 4
2 4 0 8
0 0 0 0
4 8 0 16