在for循环的前面返回值

时间:2019-05-22 02:36:28

标签: python python-3.x

我刚刚看到其他人的一些代码。

labels = ["{0}-{1}".format(i, i + 9) for i in range(0, 100, 10)]
print(labels)

输出为

['0-9', '10-19', '20-29', '30-39', '40-49', '50-59', '60-69', '70-79', '80-89', '90-99']

如何理解?是否在for循环的最前面返回值?

2 个答案:

答案 0 :(得分:3)

此行,

labels = ["{0}-{1}".format(i, i + 9) for i in range(0, 100, 10)]

等效于以下代码:

labels = []
for i in range(0, 100, 10):
    labels.append("{0}-{1}".format(i, i + 9))

让我们对其进行测试:

labels = ["{0}-{1}".format(i, i + 9) for i in range(0, 100, 10)]

another_list = []
for i in range(0, 100, 10):
    another_list.append("{0}-{1}".format(i, i + 9))

print(labels == another_list)
# True

它叫List Comprehension.

此外,您还有range(0, 100, 10)range是“ an immutable sequence of numbers.

您可以看到以下数字:

In [1]: list(range(0, 100, 10))
Out[1]: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

答案 1 :(得分:0)

首先,您需要了解for循环。

for i in range(0, 100, 10)i=0开头,以10的间隔转到i=100。因此,i = [0, 10, 20, 30, 40 , 50, ..., 100]

然后.format(i, i+9)ii+9的值放在-中,并用labels分隔。