在Python中处理至少一行

时间:2013-06-30 02:37:06

标签: python

我的Python脚本中有以下代码结构:

for fullName in lines[:-1]:
    do stuff ...

这会处理除最后一行之外的每一行。最后一行是公司名称,其余的都是人名。这适用于没有公司名称的情况。在这种情况下,循环不会被执行。如果没有公司名称,则只能有一个名称。有没有办法告诉Python至少执行一次这个循环?

5 个答案:

答案 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