Python的循环声明和行为

时间:2018-08-20 09:24:03

标签: python loops for-loop

我发现很难理解以下代码的工作原理:

mylist = [1,2,3,4,5]
print(sum(i for i in mylist))

上面的代码给出了正确的结果15,但是不应该在声明之后而不是之前使用“ i”吗?

4 个答案:

答案 0 :(得分:4)

阅读generator expressions上的文档。

您将看到,您正在(有效地)创建一个迷你发电机,等效于:

def iter_list(lst):
    for i in lst:
        yield i

myList = [1,2,3,4,5]
print(sum(iter_list(myList)))

答案 1 :(得分:1)

Python是一种非类型化语言。 这意味着您无需声明诸如i之类的变量。

通过进行编辑,您可以使编译器更加清晰,并了解您的理解:

mylist = [1,2,3,4,5]
print(sum(int(i) for i in mylist ))

因此,Python在给变量赋类型方面非常聪明,并且与静态C代码相比也非常灵活。

答案 2 :(得分:1)

在这种特殊情况下(list-compherensions),语法允许这样做

答案 3 :(得分:1)

由于sum()...的语法...可迭代且起始位置

select count(*) FROM UserName where MONTH(signed_in) = MONTH(getdate()) AND YEAR(signed_in) = YEAR(getdate());

您可以在其中查看示例-> https://www.programiz.com/python-programming/methods/built-in/sum