用容器装非容器的资料(整数、浮点数、布林)是一维的概念,可以想成是数学中的数列,或是前面举例的火车
如果容器里面装容器,就可以达成二维或是多维的概念
可以想成是数学中的矩阵,或是表格的概念
如果用火车和货柜来举例,就是一节车厢往上叠好几个货柜
这个时候一个货柜会有两个编号,换句话说这个时候要有两个编号才能找到一个货柜
以表格来说,一个表格中的资料可以用第 i 列第 j 栏表示
下面表格中,123在第2列第4栏
栏 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | 1 | 3 | 5 | 45 |
2 | 32 | 64 | 16 | 123 |
3 | 12 | 43 | 11 | 66 |
如果一个串列的元也是串列,就可以达成二维的概念
上面的表格可以用下面的串列表示
data = [[1, 3, 5, 45],
[32, 64, 16, 123],
[12, 43, 11, 66]]
print(data)
data
中的每一个元都是一个串列,data[0]
是 [1, 3, 5, 45]
,data[1]
是 [32, 64, 16, 123]
,data[2]
是 [12, 43, 11, 66]
data = [[1, 3, 5, 45],
[32, 64, 16, 123],
[12, 43, 11, 66]]
print(data[0])
print(data[1])
print(data[2])
因为每个元都是独立的串列,所以实际上每个串列的长度可以不一样
data = [[1, 3, 5, 45, 6, 7,10],
[32, 64, 16, 123],
[12, 43, 11, 66, 2, 43]]
print(data)
因为 data[0]
, data[1]
, data[2]
都是串列,所以可以用索引取得它们的元
data = [[1, 3, 5, 45],
[32, 64, 16, 123],
[12, 43, 11, 66]]
print(data[0][0], data[0][1], data[0][2], data[0][3])
print(data[1][0], data[1][1], data[1][2], data[0][3])
print(data[2][0], data[2][1], data[2][2], data[2][3])
因为串列中元的型别可以不同,所以 data
除了串列还可以有其他型态的资料
data = [[1, 3, 5, 45],
[32, 64, 16, 123],
[12, 43, 11, 66]]
data.append(123)
print(data)
用 append()
可以在 data
中再加入串列
data = [[1, 3, 5, 45],
[32, 64, 16, 123],
[12, 43, 11, 66]]
data.append([1, 2, 3, 4, 5])
print(data)
也可以对 data[0]
, data[1]
, data[2]
增加/删除内容
data = [[1, 3, 5, 45],
[32, 64, 16, 123],
[12, 43, 11, 66]]
data[0].append(64)
data[1].pop(3)
print(data[0])
print(data[1])
用回圈将 data
中的元显示到视窗上
data = [[1, 3, 5, 45],
[32, 64, 16, 123],
[12, 43, 11, 66]]
for i in range(len(data)):
print(data[i])
在回圈中加上回圈,可以把 data[0]
~data[2]
的元显示到视窗上
data = [[1, 3, 5],
[32, 64, 123]]
for i in range(len(data)):
for j in range(len(data[i])):
print(data[i][j], end=' ')
print()
因为 data
有三个元,所以 range(len(data))
会产生 0, 1 两个数字,在第一个回圈中:
i
是0,data[i]
等同 data[0]
,所以 range(len(data[i]))
就是 range(len(data[0]))
,产生 0, 1, 2,所以在第二个回圈中:
j
是0,data[i][j]
等同 data[0][0]
,视窗显示1j
是1,data[i][j]
等同 data[0][1]
,视窗显示3j
是2,data[i][j]
等同 data[0][2]
,视窗显示5print()
让结果换行i
是1,data[i]
等同 data[1]
,所以 range(len(data[i]))
就是 range(len(data[1]))
,产生 0, 1, 2,所以在第二个回圈中:
j
是0,data[i][j]
等同 data[1][0]
,视窗显示32j
是1,data[i][j]
等同 data[1][1]
,视窗显示64j
是2,data[i][j]
等同 data[1][2]
,视窗显示123分解动作
以下的程序码有一样的效果
data = [[1, 3, 5],
[32, 64, 123]]
for i in data:
for j in i:
print(j, end=' ')
print()
先复习一下字典,字典中的每个值都对应到一个键
就像是证件上的栏位一样,每一栏都有一个项目的名称,且每一栏都只有一笔资料
Name | Number | Age |
---|---|---|
Jay | 001 | 18 |
上面的表格用字典表示
student = {'Name': 'Jay', 'Number': '001', 'Age': 18}
用串列储存多个字典,可以一次储存多个有相同键的字典,达到类似以下表格的结构
栏 | Name | Number | Age |
---|---|---|---|
1 | Jay | 001 | 18 |
2 | John | 002 | 19 |
3 | Johnny | 120 | 22 |
4 | Joe | 121 | 36 |
students = [{'Name': 'Jay', 'Number': '001', 'Age': 18},
{'Name': 'John', 'Number': '002', 'Age': 19},
{'Name': 'Johnny', 'Number': '120', 'Age': 22},
{'Name': 'Joe', 'Number': '121', 'Age': 26}
]
用回圈把 students
的每个元列出来
students = [{'Name': 'Jay', 'Number': '001', 'Age': 18},
{'Name': 'John', 'Number': '002', 'Age': 19},
{'Name': 'Johnny', 'Number': '120', 'Age': 22},
{'Name': 'Joe', 'Number': '121', 'Age': 26}
]
for student in students:
print(student)
字典的方法 keys()
可以取得字典中所有的键
student = {'Name': 'Jay', 'Number': '001', 'Age': 18}
print(student.keys())
用回圈可以从第一个键看到最後一个键
student = {'Name': 'Jay', 'Number': '001', 'Age': 18}
for i in student.keys():
print(i)
如果要把 students[0]
~students[2]
中的每个值列出来,可以用两个回圈达成
students = [{'Name': 'Jay', 'Number': '001', 'Age': 18},
{'Name': 'John', 'Number': '002', 'Age': 19},
{'Name': 'Johnny', 'Number': '120', 'Age': 22},
{'Name': 'Joe', 'Number': '121', 'Age': 26}
]
for student in students:
for key in student.keys():
print(student[key], end=' ')
print()
可以在显示值的同时显示键,因为键本身是字串,所以可以用 +
把键和 :
串在一起
students = [{'Name': 'Jay', 'Number': '001', 'Age': 18},
{'Name': 'John', 'Number': '002', 'Age': 19},
{'Name': 'Johnny', 'Number': '120', 'Age': 22},
{'Name': 'Joe', 'Number': '121', 'Age': 26}
]
for student in students:
for key in student.keys():
print(key+':', student[key], end=' ')
print()
<<: 纯手工打造UART版资料清洗工具 之 com0com for win10 x64 工具介绍
Q: 这个用Svg做吧? A: 如果你的需求跟我这款一样,Css就可以画罗~ 上一篇的时钟给小编这...
前端的社群发展愈来愈蓬勃,延伸出各式各样基於 HTML、CSS、JS 的开源套件,像是 Bootst...
您的订阅是我制作影片的动力 订阅点这里~ 影片程序码 ## 应用三: 相异点侦测 #### libr...
说明 藉由马可夫模型的机率特性,将语言中的最小单位-词语组成句子,再由句子组为文章 马可夫模型:一种...
好的,那接下来我们就要来显示我们的资料啦!! 由於我们的资料会有一个是对方传过来的,一个是我们自己...