Python:Lambda表达式
我尝试将输入作为:Python:Lambda表达式,python,Python,我尝试将输入作为: 1.jpg 10.png 11.png 2.jpg 3.png 并使用lambda表达式打印到列表: ['001.jpg', '010.png', '011.png', '002.jpg', '003.png'] 我认为我做对了。但它会出现以下错误: AttributeError:“list”对象没有属性“split” 我遗漏了什么?您可以使用simplestr.split并将数字长度作为字符串计算填充: s = '1.jpg 10.png 11.png 2.jpg 3
1.jpg 10.png 11.png 2.jpg 3.png
并使用lambda表达式打印到列表:
['001.jpg', '010.png', '011.png', '002.jpg', '003.png']
我认为我做对了。但它会出现以下错误: AttributeError:“list”对象没有属性“split”
我遗漏了什么?您可以使用simple
str.split
并将数字长度作为字符串计算填充:
s = '1.jpg 10.png 11.png 2.jpg 3.png'
result = list(map(lambda x:'0'*(3-len(x.split('.')[0]))+x, s.split()))
输出:
['001.jpg', '010.png', '011.png', '002.jpg', '003.png']
这里的列表理解比
map
和lambda
更有效,可读性也更高
s = '1.jpg 10.png 11.png 2.jpg 3.png'
result = ['{0:0>3}.{1}'.format(*x.split('.')) for x in s.split()]
您不需要任何映射或lambda,只需
zfill
:
print([x.zfill(8) for x in input().split()])
在本例中,将
8
调整为所需的任意长度显示错误。@hpaulj AttributeError:“list”对象没有属性“split”,您可以将字符串拆分为字符串列表。确保您了解每个变量是什么。我无法获取您的错误。我的错误表明不允许将lambda函数作为参数传递给format。@Ofer Sadan给出的答案非常优雅,你应该使用它。既然你想知道你错过了什么,我建议你看看这种方法,打印(列表(map(lambda x:{0:03d}.{1}).格式(int(x.split('..')[0]),x.split('.')[1]))你能帮我写代码吗?我只是想知道我错过了什么,我甚至没有想到答案会很好!
print([x.zfill(8) for x in input().split()])