如果在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中的那个。
答案 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不是布尔值,将无法工作。希望有所帮助。