对于&而循环条件比较

时间:2014-01-21 21:44:56

标签: php python loops for-loop while-loop

如果在PHP中使用for循环我写了

foreach($vertex['neighbours'] as $n_vertex)

它是否类似于Python中的for循环

for n_vertex in vertex['neighbors']:

类似于PHP中的While循环使用

while(!empty($my_queue))

它类似于Python下面的while循环

while my_queue:

如果没有,Python中的for和while循环的正确版本是什么,接下来是PHP中的那个。

2 个答案:

答案 0 :(得分:2)

是的,这些是相似的。

它们并不完全相同,但差异在大多数代码中都无关紧要。*

使用my_queue直接作为测试,而不是empty方法/函数,按照PEP 8中的建议使用Pythonic方法:

  

对于序列,(字符串,列表,元组),请使用空序列为假的事实。

所以,你做的一切都完全正确。

当然在某些情况下,使用list comprehension或生成器表达式(在PHP中没有直接类比)可能比for语句更简洁或可读,但您从不需要使用它们。


*首先,Python for循环从源代码创建iterator,然后一遍又一遍地调用next(it),直到StopIteration被引发,这与发生在PHP的封面下。除非你使用非常奇怪的类型,或试图改变你在迭代过程中迭代的对象,否则你永远不会注意到差异。其次,在Python中,与PHP不同,my_queue理论上可以是可迭代的,但不是序列,如迭代器 - 在这种情况下while my_queue:将不起作用。但是,对于你命名为my_queue的东西,这是不太可能的。

答案 1 :(得分:-1)

你的两个for循环都很好。它们是相同/相似的。但是while循环彼此不同:

while(!empty($my_queue))

检查列表不是空的并经过它。另一方面,

while my_queue:
如果my_queue不是布尔值,

将无法工作。希望有所帮助。