我的Python脚本中有以下代码结构:
for fullName in lines[:-1]:
do stuff ...
这会处理除最后一行之外的每一行。最后一行是公司名称,其余的都是人名。这适用于没有公司名称的情况。在这种情况下,循环不会被执行。如果没有公司名称,则只能有一个名称。有没有办法告诉Python至少执行一次这个循环?
答案 0 :(得分:2)
您可以这样做,根据lines
的长度动态设置范围的结尾:
i = len(lines)
i = -1 if i > 1 else i
for fullName in lines[:i]:
dostuff()
答案 1 :(得分:2)
如何使用Python的conditional:
>>> 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
答案 2 :(得分:1)
使用if-statement
:
if len(fullName) == 1: # Only one person
dostuff_with_one_person()
else:
for fullName in lines[:-1]:
dostuff()
答案 3 :(得分:1)
直截了当的方法。如果有多个记录,则只处理到最后一个记录。
for i in xrange(len(lines)):
process lines[i]
if i == len(lines)-2: break
如果只有一个元素,我将为0并且将被处理并且i!= -1。如果有多个元素,让我们说2.在处理完第一个元素后,我将为0,并且i ==(2-2)将为真并突破循环。
答案 4 :(得分:1)
这实际上是Python中的do-while loop构造。
基本上,您可以使用具有中断条件的for循环或while循环。对于你的,你可以这样做:
def do_stuff(x):
print(x)
for i,n in enumerate(lst):
do_stuff(n)
if i>=len(lst)-2:
break