2

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

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

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

4

5 回答 5

2

您可以这样做,根据以下长度动态设置范围的结尾lines

i = len(lines)
i = -1 if i > 1 else i
for fullName in lines[:i]:
    dostuff()
于 2013-06-30T02:42:11.907 回答
2

如何使用 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
于 2013-06-30T03:17:56.360 回答
1

直截了当的方法。如果有多个记录,则只处理到最后一个记录。

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) 为真并跳出循环。

于 2013-06-30T03:32:41.807 回答
1

这本质上是 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
于 2013-06-30T03:36:39.853 回答
1

使用if-statement

if len(fullName) == 1: # Only one person
    dostuff_with_one_person() 
else:
    for fullName in lines[:-1]:
        dostuff()
于 2013-06-30T02:39:39.920 回答