Python:从列表中打印元素直到特定元素

irf*_*ari 3 python printing list

我有一个包含不同字数的字符串列表,例如.

abc = ['apple', 'apple ball', 'cat ', 'ball apple', 'dog cat apple',
       'apple ball cat dog', 'cat', 'ball apple']
Run Code Online (Sandbox Code Playgroud)

我所做的是我已经计算了每个元素中的空格数.我现在要做的是打印所有少于3个空格的元素,直到我到达一个有3个或更多空格的元素而不是它后面的元素...例如在上面的列表中我应该得到输出

apple
apple ball
cat
dog cat apple
Run Code Online (Sandbox Code Playgroud)

之后没有任何元素,apple ball cat dog因为它有3个空格.我还想指出,我列出了这样的列表,所以无论你们想到什么解决方案,请记住它可以扩展到列表列表:)谢谢大家......

Sve*_*ach 12

试试itertools.takewhile():

from itertools import takewhile
for s in takewhile(lambda x: x.count(" ") < 3, abc):
    print s
Run Code Online (Sandbox Code Playgroud)

对于列表列表,只需添加另一个for循环:

for abc in list_of_lists:
    for s in takewhile(lambda x: x.count(" ") < 3, abc):
        print s
Run Code Online (Sandbox Code Playgroud)