打破 python string join() 方法中的 for 循环

Breaking out of a for loop inside of python string join() Method

我的代码是:

maxlimit = 5
mystring = ' \r\n '.join([('' if (idx >= maxlimit) else str(name))
                         for idx,name in enumerate(queryset)])

如果 idx >= maxlimit 我怎样才能跳出 join() 方法内的 for 循环?

嗯,你应该在列表理解中使用 if 条件:

mystring = ' \r\n '.join([str(name) for idx, name in enumerate(queryset) 
                          if idx < maxlimit])

这将生成仅包含 5 个项目的列表。

但是这样就更容易限制要迭代的项目数 itertools.islice;或者如果查询集(我不知道它支持什么)支持切片,那么只需使用 [:maxlimit]:

对其进行切片
from itertools import islice
' \r\n '.join([str(name) for name in islice(queryset, maxlimit)])

虽然对于一个函数对每个元素的简单应用,我经常使用 map 因为它需要更少的输入:

' \r\n '.join(map(str, islice(queryset, maxlimit)))