打破 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)))
我的代码是:
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)))