以下代码给出的含义是什么?

时间:2019-04-01 13:12:08

标签: python python-3.x list

问题是要使用4个整数作为在单独的行中输入的输入。 例如:

1
1
1
2

以下代码可完成所需的操作。我想了解它的工作原理。

x,y,z,n=[int(input()) for _ in range(4)]

3 个答案:

答案 0 :(得分:1)

欢迎!

此代码等效于

x = int(input())
y = int(input())
z = int(input())
n = int(input())

input()函数从用户读取输入,int尝试将其转换为整数,并将其分配给每个变量(xyzn)。

代码也可以写为:

numbers = []
for i in range(4): # Loop 4 times
 numbers[i] = int(input())

x = numbers[0]
y = numbers[1]
z = numbers[2]
n = numbers[3]

与您提供的表格更相似。但是作者使用了两个python功能,这些功能使代码更小(更富表现力)。我会同时解释:

  1. List Comprehensions

在编程过程中很多次,您将多次执行一条命令并将结果存储到列表中,例如将值从一个列表映射到另一个列表。在这种情况下,您将具有以下内容:

numbers_til_5 = [0,1,2,3,4,5]
squares_til_5 = []
for n in numbers_til_5:
  squares_til_5.append(n*n)

使用列表理解语法,我们可以做到:

sqaures_til_5 = [ n*n for n in numbers_til_5]

另一个功能是:

  1. Destructuring

此功能使您可以在单个语句中获取列表的元素。 在示例中,我们有:

x = numbers[0]
y = numbers[1]
z = numbers[2]
n = numbers[3]

可以用x,y,z,n = numbers代替。 另一种有趣的形式是,当您只关心第一个参数时,例如:

first = numbers[0]
rest = numbers[1:] # This get all elements starting from the first

可以写为first, *rest = numbers

我希望我能说清楚。

答案 1 :(得分:0)

for _ in range(4)重复int(input()) 4次,所以方括号现在包含前四个输入[1, 1, 1, 2]

在Python中,您可以一次分配多个变量,因此x,y,z和n将被分配给相应的括号值。

为了更好地理解,您可以提取以下各个部分:

x = int(input())
y = int(input())
z = int(input())
n = int(input())

答案 2 :(得分:0)

它正在运行一个循环,以整数形式输入值,然后按顺序将这些值提供给变量x,y,z,n。 range(n)将循环运行0-n的范围(在这种情况下为4次)。 _表示运行循环时的“任何内容”。