我的 Python 脚本中有以下代码结构:
for fullName in lines[:-1]:
do stuff ...
这会处理除最后一行之外的每一行。最后一行是公司名称,其余都是人名。除了没有公司名称的情况外,这有效。在这种情况下,循环不会被执行。如果没有公司名称,则只能有一个名称。有没有办法告诉 Python 至少执行一次这个循环?
我的 Python 脚本中有以下代码结构:
for fullName in lines[:-1]:
do stuff ...
这会处理除最后一行之外的每一行。最后一行是公司名称,其余都是人名。除了没有公司名称的情况外,这有效。在这种情况下,循环不会被执行。如果没有公司名称,则只能有一个名称。有没有办法告诉 Python 至少执行一次这个循环?
您可以这样做,根据以下长度动态设置范围的结尾lines
:
i = len(lines)
i = -1 if i > 1 else i
for fullName in lines[:i]:
dostuff()
如何使用 Python 的条件:
>>> name=['Roger']
>>> names=['Pete','Bob','Acme Corp']
>>>
>>> tgt=name
>>> for n in tgt if len(tgt)==1 else tgt[:-1]:
... print(n)
...
Roger
>>> tgt=names
>>> for n in tgt if len(tgt)==1 else tgt[:-1]:
... print(n)
...
Pete
Bob
直截了当的方法。如果有多个记录,则只处理到最后一个记录。
for i in xrange(len(lines)):
process lines[i]
if i == len(lines)-2: break
如果只有一个元素,则 i 将为 0 并且将被处理并且 i != -1。如果有多个元素,假设为 2。处理第一个元素后,i 将为 0,并且 i == (2-2) 为真并跳出循环。
这本质上是 Python 中的一个do-while 循环结构。
本质上,您可以有一个带有中断条件的 for 循环或 while 循环。对于你的,你可以这样做:
def do_stuff(x):
print(x)
for i,n in enumerate(lst):
do_stuff(n)
if i>=len(lst)-2:
break
使用if-statement
:
if len(fullName) == 1: # Only one person
dostuff_with_one_person()
else:
for fullName in lines[:-1]:
dostuff()