【有书共读11】零压力学Python读书笔记10

第13章:二维数组

"""
矩阵:二维列表

"""
# 创建简单的二维列表

list2D=[[0,1,2],
        [3,4,5],
        [6,7,8]]

print(list2D)

# 使用下标访问二维列表中的值

# 访问第二行第二个元素(注意索引号是从零开始的)
num1=list2D[1][1]
print(num1)

# 访问一行元素
line1=list2D[0]
print(line1)

# print(list2D[3][3]) 越界一样会报错


# 不规则矩阵

mat=[[1]*2,[2]*4,[0,9,3,2,1,4]]
print(mat)
mat[0][0]=0
print(mat)

# 使用* 创建二维列表存在的问题
mat1=[[0]*3]*3
print(mat1)
# 打印的结果为 [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

# 我们修改其中一个值
mat1[1][1]=2
print(mat1)
# 打印的结果为 [[0, 2, 0], [0, 2, 0], [0, 2, 0]]
"""
# 可以发现每一行的第二个元素都改变了
# 其实上面的生成二维列表的语句等价于下面的语句
row=[0]*3
mat1=[row,row,row]
所以当我们修改的时候其实是修改了row中的值,所以每一行都会改变
这个时候就要深刻理解“python将每一个变量都视为引用这句话了”
"""

# 创建实际的二维矩阵---逐步创建

'''
一般创建二维列表的公式
name=[[val]*cols for _ in range(rows)]

name: 二维列表名
val :初始的变量
cols:列数
rows:行数
_   :这里的‘_’在列表推导式中表示空变量

根据列表推导式可知,我们可以不断的添加推导字句,
要让矩阵有多少维度就可以有多少维度
'''

name=[['1']*10 for _ in range(3)]
print(name)

# 旋转矩阵

# 创建一个n*n的矩阵
n=5
map1=[[i]*n for i in range(n)]
print(map1)
"""
输出结果如下
[[0, 0, 0, 0, 0],
 [1, 1, 1, 1, 1],
 [2, 2, 2, 2, 2],
 [3, 3, 3, 3, 3],
 [4, 4, 4, 4, 4]]

"""
map2=[[0]*n for _ in range(n)]
for i in range(n):
    for j in range(n):
        map2[i][j]=map1[j][n-1-i]

print(map2)
"""
输出结果为
[[0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4],
 [0, 1, 2, 3, 4]]

其实是for循环是可以改成列表推导式的,所以可以写出来很简单
map2=[[map1[i][n-1-i] for i in range(n)] for j in range(n)]

可以打印一下,结果是一样的
"""

#笔记##Python##读书笔记#
全部评论

相关推荐

kl_我是东山啊:《相关公司:阿里巴巴》
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务