用行列式——理解python的列表

前言

在学习python中的“列表”这个数据结构的时候,踩了许多坑。

总结一下如何处理二维列表 例如,我们要处理如下数据

#! python3
Data = [['apples','oranges','cherries','banana'], ['Alice','Bob','Carol','David'] ['dogs','cats','moose','goose']]

表格里面包含了三个子列表,每一个子列表里,含有四个长度不一的字符串。 让我们换一种排版方式

这看上去不就是3行4列的矩阵么?

#! python3
                0         1          2         3
     0      [['apples','oranges','cherries','banana'],
     1      ['Alice',   'Bob',    'Carol',  'David'],
     2      ['dogs',   'cats',   'moose',  'goose']]
  • 行标: 0 ~ 2 是内层列表的在“母列表”索引下标
  • 列标:0 ~ 3 是每个字符串,在内层列表中的索引下标

目标:

一、逐列输出(仍然是横向显示的),一列打印完后,换行继续打印

  apples Alice dogs
 oranges Bob   cats
cherries Carol moose
  banana David goose
  • 代码如下
#! python3
1 for col in range(len(data[0])): 
2	  for row in range(len(data)):
3		print(tableData[row][col], end = ' ')
4	  print(' ')

二、逐行输出,输出一行,换行继续打印

apples oranges cherries banana
Alice Bob Carol David
dogs cats moose goose
  • 代码如下
#! python3
1 for row in range(len(data)): 
2	  for col in range(len(data[0])):
3		print(tableData[row][col], end = ' ')
4	  print(' ')

总结

  • 两段代码,其实只把第一行和第二行交换了。
  • 一句话,逐行读取先for row,逐列读取就for col !
  • 获取内层列表的下标,可以这样写
for col in range(len(data[0])):

当然,上面的例子比较特殊,内层列表的长度都是4