Python列表匹配需求:筛选以指定前缀开头的文件条目
Python列表筛选:提取指定前缀的文件条目
现有两个Python列表:
prefixList = ["12","9"] files = ["12-a.csv","12-b.csv","9-t.txt","8-a.txt"]
需要创建新列表fileOutput,把所有以prefixList里的元素开头的文件条目都放进去,最终要得到:
fileOutput = ["12-a.csv","12-b.csv","9-t.txt"]
几种实现方法
方法1:列表推导式(最常用)
直接遍历文件列表,逐个检查是否符合前缀要求:
prefixList = ["12","9"] files = ["12-a.csv","12-b.csv","9-t.txt","8-a.txt"] fileOutput = [file for file in files if any(file.startswith(prefix) for prefix in prefixList)] print(fileOutput)
运行后就能得到预期的结果。
方法2:用filter函数(函数式风格)
如果习惯用函数式写法,可以用filter配合lambda表达式:
prefixList = ["12","9"] files = ["12-a.csv","12-b.csv","9-t.txt","8-a.txt"] fileOutput = list(filter(lambda f: any(f.startswith(p) for p in prefixList), files)) print(fileOutput)
方法3:优化版列表推导式
str.startswith()其实支持传入元组做批量检查,把前缀列表转成元组能提升一点性能,写法也更简洁:
prefixList = ["12","9"] files = ["12-a.csv","12-b.csv","9-t.txt","8-a.txt"] prefix_tuple = tuple(prefixList) fileOutput = [file for file in files if file.startswith(prefix_tuple)] print(fileOutput)
内容的提问来源于stack exchange,提问作者WelshOne
相关产品推荐
相关产品推荐

