当我想使用 my_list 中提供的文本信息从 super_list 中提取元素时,我的代码不起作用:
import glob
super_list = glob.glob('*.jpg')
print (super_list)
E:\\a2001.jpg
E:\\a2008.jpg
E:\\a2007.jpg
E:\\a2002.jpg
E:\\a2009.jpg
E:\\a2009.jpg
my_list = ['2001','2002','2009']
这是编码中的问题
result_list = [x for x in super_list if (y for y in my_list) in x]
print (result_list)
结果列表应该是:
E:\\a2001.jpg
E:\\a2002.jpg
E:\\a2009.jpg
E:\\a2009.jpg
等待最好的方法。
最佳答案
您的列表理解语法略有偏差。应该是这样的:
result_list = [x for x in super_list if any(y in x for y in my_list)]
下面是一个演示:
>>> super_list = [
... 'E:\\a2001.jpg',
... 'E:\\a2008.jpg',
... 'E:\\a2007.jpg',
... 'E:\\a2002.jpg',
... 'E:\\a2009.jpg',
... 'E:\\a2009.jpg'
... ]
>>> my_list = ['2001','2002','2009']
>>> result_list = [x for x in super_list if any(y in x for y in my_list)]
>>> result_list
['E:\\a2001.jpg', 'E:\\a2002.jpg', 'E:\\a2009.jpg', 'E:\\a2009.jpg']
>>>
这里是 any
的引用和一个 list comprehensions .
关于python - 使用子列表中可用的文本信息从 super 列表中提取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21446971/