繁体   English   中英

列表理解语法错误

[英]List Comprehension Syntax Error

我正在尝试使用列表推导仅打印包含子字符串.pdf的字符串。

这是导致语法错误的代码行。

list_of_files = [x if ".pdf" in x for x in list_of_files]

列表list_of_files包含.pdf.docx文件以供参考。 它们是使用os.listdir收集的。

这个for循环工作正常,但我宁愿使用列表理解。

for x in list_of_files:
    if ".pdf" in x:
        print(x)

感谢您的任何帮助!

print(list(x for x in list_of_files if '.pdf' in x))

您不需要print(x) 只需x完成工作。

list_of_files = ['test.pdf','doc.docx','yolo.pdf']
pdfs = [x for x in list_of_files if '.pdf' in x]
print(pdfs)

输出:

['test.pdf', 'yolo.pdf']

if需要过滤列表(这是您要执行的操作),则需要在for循环后指定条件。 如果只需要条件检查项目,则可以在for循环之前将if with else使用。 循环之前的if绝对需要else

pdfs = [x if '.pdf' in x else 'Not pdf' for x in list_of_files]
print(pdfs)
['test.pdf', 'Not pdf', 'yolo.pdf']

pdf_files = [x for x in file_list if ".pdf" in x]

您的if语句必须在末尾,因为这是对其进行逻辑评估的时间。 我不确定if语句是否一开始就可以工作,只是在将列表对象扩展为单个值之前,没有if语句是没有道理的。

正如接受的答案中指出的那样,如果您可以在列表理解循环的开头,则需要在结尾处提供else语句(以捕获任何散乱的人)。 在这种情况下,这不合适,因为您只想在新列表中包含这些值以包含.pdf并丢弃其他值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM