For循环之间的区别

时间:2020-04-29 10:12:35

标签: python for-loop

在这里,它们都给出相同的结果,但是一个比另一个更复杂,而我在理解那个上有麻烦。有人可以解释这两者之间的区别吗? 这是我写的:

answer = [1,2,3,4,5,4,3,2,1]
for x in answer:
    print("*"* x)

这是复杂的一个:

n=5;
for i in range(n):
    for j in range(i):
        print ('* ', end="")
    print('')

for i in range(n,0,-1):
    for j in range(i):
        print('* ', end="")
    print('')

有人可以解释第二个吗?

1 个答案:

答案 0 :(得分:-1)

range(start, stop, step)start的增量/减量范围内从end到-但不包括-step的所有元素上都是可迭代的。因此:

list(range(5)) == [0,1,2,3,4]
list(range(5, 0, -1)) == [5,4,3,2,1]

因此,列表[1,2,3,4,5,4,3,2,1]的真实等价项为

list(range(1, 5)) + list(range(5, 0, -1))

而且

print("*" * x)  # "*" * 5 == "*****"

可以写成一个循环:

for _ in range(x):
    print("*", end='')  # prints "*", not ending with default line break "\n"
print()  # adds the line break

请参阅rangeprint上的文档。