python中二维阵列的变换实例

yipeiwu_com5年前Python基础

本文实例讲述了python中二维阵列的变换方法。分享给大家供大家参考。具体方法如下:

先看如下代码:

arr = [ [1, 2, 3], [4, 5, 6], [7, 8,9], [10, 11, 12]] 
 
print map(list, zip(*arr)) 
print '_-------------------------------------------------' 
print [[r[col] for r in arr] for col in range(len(arr[0]))] 

运行结果如下:

[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]
_-------------------------------------------------
[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]

这里解释一下:

1. 第一种方法:map(list, zip(*arr))
zip([iterable, ...])
This function returns a list of tuples, where the i-th tuple contains thei-th element from each of the argument sequences or iterables.
zip()

这个函数返回一个元组的列表,其中的第i个元组包含从参数传进来的队列的每一个参数的元素的的第I个元素

再举个例子说明一下吧:

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]

实际上zip(*arr)返回的就是[(1, 4, 7, 10), (2, 5, 8, 11), (3, 6, 9, 12)],只不过它的每个元素是元组

map(func, list):

对list中的每个元素调用func方法,返回列表
参数*arr 是python用于传递任意基于位置的参数的语法

2. 第二种方法: [[r[col] for r in arr] for col in range(len(arr[0]))]
内层推导改变的是(从行中)选出的元素, 外层推导则影响了选择子(即列)

希望本文所述对大家的Python程序设计有所帮助。

相关文章

python实现坦克大战游戏 附详细注释

本文实例为大家分享了python实现坦克大战的具体代码,供大家参考,具体内容如下 #功能实现游戏主窗口 import pygame,time,random#导入模块 _displa...

详解Python 数据库的Connection、Cursor两大对象

详解Python 数据库的Connection、Cursor两大对象

Python 数据库图解流程 Connection、Cursor比喻 Connection()的参数列表 host,连接的数据库服务器主机名,默认为本地主机(localhost)。u...

TensorFlow实现AutoEncoder自编码器

TensorFlow实现AutoEncoder自编码器

一、概述 AutoEncoder大致是一个将数据的高维特征进行压缩降维编码,再经过相反的解码过程的一种学习方法。学习过程中通过解码得到的最终结果与原数据进行比较,通过修正权重偏置参数降低...

python3使用pyqt5制作一个超简单浏览器的实例

我们使用的是QWebview模块,这里也主要是展示下QWebview的用法。 之前在网上找了半天的解析网页的内容,都不是很清楚。 这是核心代码: webview = Qwebview...

对python 命令的-u参数详解

缘起: 今天在看arcface的训练代码,在shell脚本中运行python 命令时后面加了-u 参数(python -u xx.py),于是对这个参数进行了下小研究。 准备知识 用网上...