列表理解语法错误

时间:2018-08-21 16:51:56

标签: python python-3.x list-comprehension

我正在尝试使用列表推导仅打印包含子字符串.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)

谢谢您的帮助!

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您不需要<div>。只需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循环之前使用if with else。循环前的for绝对需要if

else

答案 2 :(得分:1)

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

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

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