我最近参加了python的在线教程,我得到了以下几行代码:
n = int(input())
a = [[abs(i - j) for j in range(n)] for i in range(n)]
请有人解释一下他们的意思。谢谢亚当!!
答案 0 :(得分:2)
第一行接受来自用户的输入并将其转换为int(数字)并将其保存在var n
中。
第二行创建一个包含n
个子列表的列表,每个子列表包含n
个元素,如:
[[0,1,2,3],[1,0,1,2],[2,1,0,1],[3,2,1,0]]
答案 1 :(得分:2)
理解代码的最简单方法是运行它并逐步查看正在发生的事情。为了帮助您入门:
第一行是从用户输入中读取int
:
n = int(input())
第二行是使用列表理解:
a = [[abs(i - j) for j in range(n)] for i in range(n)]
可以使用for循环翻译,如下所示:
a = []
for i in range(n):
tmp = []
for j in range(n):
tmp.append(abs(i - j))
a.append(tmp)
了解以下内容(谷歌是您的朋友):
答案 2 :(得分:0)
好的,所以把它放在
部分 input()
获取用户在键盘上输入的数字
n = int(input())
获取数字而不是将其作为一串字符存储,并将其存储在' n'
下一行是列表理解,它具有基本形式
[{something to do for each value} {a range of values}]
所以打破代码行 [for i in range(n)]
获取' n'数字,从0开始,所以如果n是3,你将获得[0,1,2]。这些数字将在' i'
中 [[ for j in range(n)] for i in range(n)]
对于' i'的每个值,也针对' j'中范围内的每个值执行此操作。
[[abs(i - j) for j in range(n)] for i in range(n)]
对于每个i和j,返回i和j之差的绝对值(正数)
a = [[abs(i - j) for j in range(n)] for i in range(n)]
对于每个' i'你将得到一个i和j的每个值之间的差异列表。所以你会得到一份清单。
对于n = 3,您将获得
[[0, 1, 2], [1, 0, 1], [2, 1, 0]]