如何在python中打印列表推导的进度?

rak*_*ael 5 python list-comprehension list

在我的方法中,我必须返回列表中的列表.我希望有一个列表理解,因为该列表需要大约5分钟才能创建.

[[token.text for token in document] for document in doc_collection]
Run Code Online (Sandbox Code Playgroud)

是否有可能打印出进度,创建过程目前在哪个文件中?像这样的东西:

[[token.text for token in document] 
  and print(progress) for progress, document in enumerate(doc_collection)]
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

ted*_*ted 9

您可以使用辅助功能:

def report(index):
    if index % 1000 == 0:
        print(index)

def process(token, index, report=None):
    if report:
        report(index) 
    return token['text']

l1 = [{'text': k} for k in range(5000)]

l2 = [process(token, i, report) for i, token in enumerate(l1)]
Run Code Online (Sandbox Code Playgroud)

打印:

def process(token):
    return token['text']

l1 = [{'text': k} for k in range(5000)]
l2 = [(i % 1000 == 0 and print(i)) or process(token) for i, token in enumerate(l1)]
Run Code Online (Sandbox Code Playgroud)

  • 而不是使用`global i`,我会使用`enumerate`并将`index`传递给`function` (2认同)