当我在Python中使用while循环或for循环时,我发现了问题.看起来人们更喜欢使用for循环(更少的代码行?).是否有任何具体情况我应该使用其中一种?这是个人偏好的问题吗?到目前为止我读过的代码让我觉得它们之间存在很大差异.
S.L*_*ott 62
是的,while和for之间存在巨大差异.
在对语句遍历集合或迭代的对象或发电机的功能.
的同时,语句简单循环,直到条件为假.
这不是偏好.这是您的数据结构是什么的问题.
通常,我们将要处理的值表示为range(实际列表)或xrange(生成值).这为我们提供了为for语句量身定制的数据结构.
但是,一般来说,我们有一个现成的集合:集合,元组,列表,映射甚至字符串已经是一个可迭代的集合,所以我们只使用for循环.
在少数情况下,我们可能希望为我们完成一些函数式编程处理,在这种情况下,我们可以将该转换应用为迭代的一部分.在sorted和enumerate介绍了与自然的匹配可迭代函数应用转换的声明.
如果您没有整齐的数据结构来迭代,或者您没有驱动处理的生成器函数,则必须使用while.
Kon*_*lph 21
while在中断条件在逻辑上不依赖于任何类型的序列的情况下非常有用.例如,考虑不可预测的交互:
while user_is_sleeping():
wait()
Run Code Online (Sandbox Code Playgroud)
当然,您可以编写一个适当的迭代器来封装该操作并使其可以通过for- 但是如何提供可读性?¹
在Python的所有其他情况下,使用for(或封装循环的适当的高阶函数).
¹假设user_is_sleeping函数False在false时返回,示例代码可以重写为以下for循环:
for _ in iter(user_is_sleeping, False):
wait()
Run Code Online (Sandbox Code Playgroud)
And*_*are 13
该for是迭代一个列表,因为它更简单,更易于阅读更Python的选择.
例如:
for i in range(11):
print i
Run Code Online (Sandbox Code Playgroud)
比这简单易读:
i = 0
while i <= 10:
print i
i = i + 1
Run Code Online (Sandbox Code Playgroud)
当有明确的迭代次数(迭代次数已知)时,使用for循环。
使用示例:
for i in range(23):。for book in books:.while循环是一种不定迭代,当循环重复未知次数并在满足某些条件时结束时使用。
请注意,在 while 循环的情况下,循环的缩进主体应至少修改测试条件中的一个变量,否则结果将是无限循环。
使用示例:
代码块的执行要求用户输入指定的输入:while input == specified_input:。
当您有带有比较运算符的条件时:while count < limit and stop != False:.
参考文献:For 循环与循环。While 循环,Udacity 数据科学, Python.org。
| 归档时间: |
|
| 查看次数: |
67159 次 |
| 最近记录: |