Python中利用列表推导式实现矩阵置换时发现的"问题"
2010-12-11 22:35
656 查看
新博客地址:http://gorthon.sinaapp.com/
在看cookbook中文第二版p154第4.8节《二维阵列变换》的时候,发现一个以前自己不是太在意的问题,虽然仔细想想应该能够得出结果,但是还是做个笔记以待备用。
>>> [[(i,j) for i in range(5)] for j in range(6,10)]
结果
[[(0, 6), (1, 6), (2, 6), (3, 6), (4, 6)], [(0, 7), (1, 7), (2, 7), (3, 7), (4, 7)], [(0, 8), (1, 8), (2, 8), (3, 8), (4, 8)], [(0, 9), (1, 9), (2, 9), (3, 9), (4, 9)]]
>>> [(i,j) for i in range(5) for j in range(6,10)]
结果
[(0, 6), (0, 7), (0, 8), (0, 9), (1, 6), (1, 7), (1, 8), (1, 9), (2, 6), (2, 7), (2, 8), (2, 9), (3, 6), (3, 7), (3, 8), (3, 9), (4, 6), (4, 7), (4, 8), (4, 9)]
可以看出这里两个for的运行顺序或者说哪个表示行哪个表示列。第二个例子与c++类似,而第一个例子由于用了[],所以先里面的推导再外面的推导,产生与c++相反的感觉。
在看cookbook中文第二版p154第4.8节《二维阵列变换》的时候,发现一个以前自己不是太在意的问题,虽然仔细想想应该能够得出结果,但是还是做个笔记以待备用。
>>> [[(i,j) for i in range(5)] for j in range(6,10)]
结果
[[(0, 6), (1, 6), (2, 6), (3, 6), (4, 6)], [(0, 7), (1, 7), (2, 7), (3, 7), (4, 7)], [(0, 8), (1, 8), (2, 8), (3, 8), (4, 8)], [(0, 9), (1, 9), (2, 9), (3, 9), (4, 9)]]
>>> [(i,j) for i in range(5) for j in range(6,10)]
结果
[(0, 6), (0, 7), (0, 8), (0, 9), (1, 6), (1, 7), (1, 8), (1, 9), (2, 6), (2, 7), (2, 8), (2, 9), (3, 6), (3, 7), (3, 8), (3, 9), (4, 6), (4, 7), (4, 8), (4, 9)]
可以看出这里两个for的运行顺序或者说哪个表示行哪个表示列。第二个例子与c++类似,而第一个例子由于用了[],所以先里面的推导再外面的推导,产生与c++相反的感觉。
相关文章推荐
- kaggle冰山船只分类竞赛中遇到的Python列表推导式问题
- 【javac添加python 列表特性11】利用修改后的javac实现快速排序
- Python3 利用函数 实现阶乘、列表中删除指定元素、等差数列求和
- 利用python做数据分析中如何理解列表,列表推导式
- 一周stackoverflow热门问题选登:如何用Python for循环实现列表中数据两两循环打印?
- lua和python利用协程实现消费-生产者问题
- python实现求解列表中元素的排列和组合问题
- 动态规划之矩阵连乘问题Python实现方法
- python--利用列表推导式快速生成xml格式数据
- 拉丁矩阵问题 利用回溯法的C++实现方案
- 利用python实现strassen算法(2<=n,m)A,B为任意矩阵阶数局限于2的n次方
- Python——“元组、列表、字典、数组和矩阵”的大小问题
- 利用python列表实现单链表
- Python下的多进程实现——利用multiprocessing库实现并发爬虫
- 8皇后问题的c++与python实现对比
- python利用beautifulSoup实现爬虫
- 【廖雪峰 python教程 课后题 切片】利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法:
- Python学习笔记:列表推导式List Comprehension
- sql server 利用发布订阅方式实现数据库同步问题
- 关于网宿厦门研发中心笔试的一道PV操作题:利用java中的多线程实现生产者与消费者的同步问题