Python 使用列表理解。带嵌套if
给定一个文件名列表,我们希望将扩展名为hpp的所有文件重命名为扩展名为h。为此,我们希望生成一个名为newfilenames的新列表,由新文件名组成。使用列表理解Python 使用列表理解。带嵌套if,python,for-loop,list-comprehension,nested-if,Python,For Loop,List Comprehension,Nested If,给定一个文件名列表,我们希望将扩展名为hpp的所有文件重命名为扩展名为h。为此,我们希望生成一个名为newfilenames的新列表,由新文件名组成。使用列表理解 filenames = ["program.c", "stdio.hpp", "sample.hpp", "a.out", "math.hpp", "hpp.out"] newfilenames = [filenam
filenames = ["program.c", "stdio.hpp", "sample.hpp", "a.out", "math.hpp", "hpp.out"]
newfilenames = [filename[:len(filename) - 3] + "h" for filename in filenames if filename.endswith("p")]
print(newfilenames)
输出来了[stdio.h,sample.h,math.h]
应该是[program.c,stdio.h,sample.h,a.out,math.h,hpp.out]我想你需要
filenames = [i[:-3]+"h" if i.split(".")[-1]=="hpp" else i for i in filenames]
print(filenames)
我想你需要
filenames = [i[:-3]+"h" if i.split(".")[-1]=="hpp" else i for i in filenames]
print(filenames)
只需将.hpp替换为.h即可 输出:
['program.c', 'stdio.h', 'sample.h', 'a.out', 'math.h', 'hpp.out']
只需将.hpp替换为.h即可 输出:
['program.c', 'stdio.h', 'sample.h', 'a.out', 'math.h', 'hpp.out']
这解决了OP方法的问题,但它不是最简单或最好的解决方案,因为str.replace存在,因此应该对其进行更详细的解释。这解决了OP方法的问题,但它不是最简单或最好的解决方案,因为str.replace存在,因此应该对其进行更详细的解释。