(小甲鱼python)列表系列笔记合集二 列表的加法与乘法 访问二维列表里的元素 二维列表的创建 三维列表的创建 获取矩阵的行数和列数 二维矩阵的转置

四、列表IV总结

1。列表的加法与乘法
加法

s=[1,2,3]
t=[4,5,6]
s+t

s+t
[1, 2, 3, 4, 5, 6]

乘法

s*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

2.二维列表(矩阵)
第一种表示:

matrix=[[1,2,3],[4,5,6],[7,8,9]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

第二种

matrix=[[1,2,3],
[4,5,6],
7,8,9]]

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

3.访问列表里的元素(一位列表用一次循环,二维列表用两次循环)
代码1:

 for i in matrix:
 	for each in i:
			print(each)		
1
2
3
4
5
6
7
8
9

代码2:

for i in matrix:
	for each in i:
		print(each,end=" ")
	print()    #换行

结果:

1 2 3
4 5 6
7 8 9

4.访问列表元素

matrix[0]
[1, 2, 3]
matrix[0][0]
1
matrix[1][1]
5
matrix[2][2]
9

5.列表的扩充(一维列表到二维列表的生成)

A=[0]*3
A
[0,0,0]

for i in range(3):     
	A[i]=[0]*3    #这个地方的矩阵A已经经过了扩充等于是一维列表通过迭代成为二维列表。

A
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

下面的做法为错误的做法:

B=[[0]*3]*3
B
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

修改矩阵的值

A[1][1]=1
A
[[0, 0, 0], [0, 1, 0], [0, 0, 0]]

B[1][1]=1
B
[[0, 1, 0], [0, 1, 0], [0, 1, 0]]

5.1二维列表的生成
生成10*10的二维列表,列表所有元素初始化为1

matrix = []
for i in range(10):
    matrix.append([])
    for j in range(10):
            matrix[i].append(1)
    

6.is的用法

x=“fishc”
y=“fishc”

x is y
True

字符串和数字在列表中存储方式不同

x=[1,2,3]
y=[1,2,3]

x is y
False

接上面A,B矩阵

A=[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
B=[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

A,B矩阵由于得到的方式不同,所以矩阵里面元素存储的方式也不同。
(小甲鱼python)列表系列笔记合集二 列表的加法与乘法 访问二维列表里的元素 二维列表的创建 三维列表的创建 获取矩阵的行数和列数 二维矩阵的转置_第1张图片

A的第一行和第二行元素相同,但显示的是False,说明了,它们没有放在同一个内存地址里面。

A[0] is A[1]
False
A[1] is A[2]
False

矩阵B的问题在于试图通过乘号对一个嵌套列表进行拷贝(这种方法是错误的),但其实,它拷贝的只是对同一个列表的引用,所以它的内存布局如上图所示。

B[0] is B[1]
True
B[1] is B[2]
True

6.获取矩阵的行数和列数

matrix=[[1,2,3,4],
        [5,6,7,8],
        [9,10,11,12]]
m=len(matrix)
n=len(matrix[1])
print("行数:",m,"列数:",n)

答:行数: 3 列数: 4

7.二维矩阵的转置(3*4列表的转置)

matrix=[[1,2,3,4],
       [5,6,7,8],
       [9,10,11,12]]
#Tmatrix=[[i]*3 for i in range(3)]    列表推导式创建二维列表3*3
#创建二维列表,并初始化为0
Tmatrix=[]
for i in range(4):
   Tmatrix.append([])
   for j in range(3):
       Tmatrix[i].append(0)
#矩阵的转置 
for i in range(len(matrix)):
   for j in range(len(matrix[0])):
       Tmatrix[j][i]=matrix[i][j]   #错误写法Tmatrix[i][j]=matrix[j][i]  matrix[3][0]取不到
print(Tmatrix)

列表推导式的方法

Tmatrix=[[matrix[j][i] for j in range((len(matrix)))] for i in range((len(matrix[0])))]
print(Tmatrix)

课后题:
0.请问 == 运算符和 is 运算符有什么区别呢?

答:== 运算符用于判断两个变量的值是否相等,而 is 运算符用于判断两个变量是否为同一对象。

  1. 请问下面代码的执行结果是?

[[1, 2, 3], [4, 5, 6]] + [7, 8, 9]
答:[[1, 2, 3], [4, 5, 6], 7, 8, 9]

  1. 请问下面代码的执行结果是?

答:3

3. 请问下面代码的结果是返回 True 还是 False 呢?

a = 250
b = 250
a is b

答:返回 True。
解析:出于性能优化方面的考虑,Python 在内部为 -5~256 范围内的整数维护了一个数组,起到缓存的作用。
这样,每次你试图创建一个 -5~256 范围内的整数时,Python 都会从这个数组中返回相对应的引用,而不是重新开辟一块新的内存空间存放。

4.请问下面代码的结果是返回 True 还是 False 呢?

a = 1000
b = 1000
a is b

返回 False。
如果超过了 -5~256 这个范围(大家可以自己动手测试一下),比如 1000,那么 Python 会为两个 1000 单独开辟两块不同的内存区域,因此 a is b 的结果为 False。

  1. 既然有二维列表,那么三维列表应该也是“同理可得”的东西,请大家尝试创建一个简单的三维列表吧?
>>> three = [[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
...          [[1, 1, 1], [1, 1, 1], [1, 1, 1]],
...          [[2, 2, 2], [2, 2, 2], [2, 2, 2]]]

在这里插入图片描述

(小甲鱼python)列表系列笔记合集二 列表的加法与乘法 访问二维列表里的元素 二维列表的创建 三维列表的创建 获取矩阵的行数和列数 二维矩阵的转置_第2张图片

课后题来自小甲鱼: 列表IV

你可能感兴趣的:(小甲鱼课程笔记,python,python,开发语言)