Python行需要解释

时间:2017-11-23 21:47:10

标签: python python-3.x

我最近参加了python的在线教程,我得到了以下几行代码:

n = int(input())

a = [[abs(i - j) for j in range(n)] for i in range(n)]

请有人解释一下他们的意思。谢谢亚当!!

3 个答案:

答案 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)

了解以下内容(谷歌是您的朋友):

  • list comprehension
  • 范围()
  • 输入()

答案 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]]