python中对二维列表进行转置
python中对二维列表进行转置
001、实现方法1:使用zip*解包和list函数
>>> list1 = [["aa", "bb", "cc"], [100, 300, 500], ["kk", "xx", "yy"], [88, 22, 33]] ## 测试列表 >>> list1 [['aa', 'bb', 'cc'], [100, 300, 500], ['kk', 'xx', 'yy'], [88, 22, 33]] >>> zip(*list1) <zip object at 0x7f4f271718c0> >>> list(zip(*list1)) ## zip*解包 和 list函数实现转置 [('aa', 100, 'kk', 88), ('bb', 300, 'xx', 22), ('cc', 500, 'yy', 33)]
002、使用列表推导式实现
>>> list1 = [["aa", "bb", "cc"], [100, 300, 500], ["kk", "xx", "yy"], [88, 22, 33]] ## 测试列表 >>> for col in range(len(list1[0])): ... col_values = [row[col] for row in list1] ... col_values ... ['aa', 100, 'kk', 88] ['bb', 300, 'xx', 22] ['cc', 500, 'yy', 33] >>> list2 = list() >>> for col in range(len(list1[0])): ... col_values = [row[col] for row in list1] ## 列用列表推导式输出每一列的值,并保存在新的列表中 ... list2.append(col_values) ... >>> list2 [['aa', 100, 'kk', 88], ['bb', 300, 'xx', 22], ['cc', 500, 'yy', 33]]
。
>>> list1 [['aa', 'bb', 'cc'], [100, 300, 500], ['kk', 'xx', 'yy'], [88, 22, 33]] ## 测试列表 >>> [[row[col] for row in list1] for col in range(len(list1[0]))] ## 利用列表推导式实现 [['aa', 100, 'kk', 88], ['bb', 300, 'xx', 22], ['cc', 500, 'yy', 33]]
。