当前位置: 首页 > 面试题库 >

for循环如何评估其参数

段劲
2023-03-14
问题内容

我的问题很简单。

for循环是否评估它每次使用的参数?

如:

for i in range(300):

python是否为该循环的每次迭代创建300个项目的列表?

如果是这样,这是避免这种情况的方法吗?

lst = range(300)
for i in lst:
    #loop body

这样的代码示例也是如此。

for i in reversed(lst):

for k in range(len(lst)):

是每一次应用反向过程,还是在每次迭代中计算长度?(我同时要求python2和python3)

如果不是,Python在迭代时如何评估可迭代的更改?


问题答案:

不用担心,迭代器只会被评估一次。它最终大致等同于如下代码:

it = iter(range(300))
while True:
    try:
        i = next(it)
    except StopIteration:
        break
    ... body of loop ...

请注意,它并不 完全
等效,因为它们的break工作方式有所不同。请记住,您可以elsefor循环中添加一个,但是在上面的代码中将不起作用。



 类似资料:
  • 问题内容: 我有以下代码: 我想知道Python使用该方法对列表进行了多少次排序?是每次迭代还是一次? 换句话说,以下代码更有效吗? 问题答案: 在两个代码示例中,列表仅排序一次。 在开始循环之前,仅对一次for循环标头中运算符右侧的表达式求值。您可以在文档中阅读: 表达式列表被评估一次 ; 它应该产生一个可迭代的对象。 实际上,第二个代码示例效率 较低, 因为存在不必要的分配。

  • Q.while循环条件是作为一个整体进行计算,还是在决定是否进入循环之前一次计算一个条件?

  • 问题内容: 我想知道是否在循环周期结束时在Java中执行条件评估并在Java中循环。 例: 请问BE执行每次循环周期结束的时间? 假设和经验告诉我是的。 我知道在此示例中,它是一个常量,因此不会对性能产生影响。 但是让我们假设条件操作在不同情况下花费的时间很长。我知道接下来要做的逻辑就是将赋给变量。 我仍然要确保每次都对其进行评估。 问题答案: 是的,它将在每次循环迭代时逻辑上评估整个中间操作数。

  • 问题内容: 以下内容在Python 3.6中从不打印任何内容 相反,它只是坐在那里烧坏了CPU。问题似乎在于,如果迭代器位于无限空间内,则永远不会返回迭代器,因为它首先评估完整的迭代器。鉴于假设应该是发电机,这令人惊讶。 我本来希望这会开始计数(到无穷大),就像这个生成器的行为(直接从docs取得): 但是,尽管我的生成器立即开始计数,但使用的生成器根本不计数。 其他工具可以达到我的期望。例如,以

  • 问题内容: 我正在编写代码以确定nxn列表中的每个元素是否相同。即返回true,但将返回false。我正在考虑编写一个代码,当它发现与第一个元素不同的元素时立即停止。即: 我想停止此循环, 然后返回false。否则返回true。我将如何实施呢? 问题答案: 使用和为此。可以使用以下命令在Python中完成打破嵌套循环的操作: 另一种方法是将所有内容包装在函数中,并用于从循环中退出。

  • 评估可能的员工,却没有得到它应得的能量。一个糟糕的雇佣,就像糟糕的婚姻,是非常糟糕的。每个人首要的一部分精力应该投入到招聘上,尽管这很少发生。 有不同的面试风格。有的是折磨人的,设计用来把候选人放在巨大压力下。这是为了这样一个有用的目的:在压力下折射出性格缺陷和弱点。候选人对待面试官不会比对待他们自己更诚实,而且,人的自欺能力是令人惊奇的。 你应当,最少,对候选人进行两个小时的与口头考核等价的技术