Python 将具有lambda的字符串串联转换为f字符串
我正试图了解Python 3中f字符串的高级用法,但我似乎无法理解它们在lambda函数中的用法。例如,当您有使用lambda定义字符串中某些值的字符串连接时,如何使用f字符串?当其中一个值使用if函数定义该值时,情况更是如此 例如,我尝试了以下方法:Python 将具有lambda的字符串串联转换为f字符串,python,python-3.x,lambda,concatenation,f-string,Python,Python 3.x,Lambda,Concatenation,F String,我正试图了解Python 3中f字符串的高级用法,但我似乎无法理解它们在lambda函数中的用法。例如,当您有使用lambda定义字符串中某些值的字符串连接时,如何使用f字符串?当其中一个值使用if函数定义该值时,情况更是如此 例如,我尝试了以下方法: cmd_out=reduce(lambda acc,x:f'{acc}-v{x[“Source”]}:{x[“Destination”]} f'{(“:ro”如果不是x[“RW”]则为True,否则为“”)}{mounts}') 但这不起作用
cmd_out=reduce(lambda acc,x:f'{acc}-v{x[“Source”]}:{x[“Destination”]}
f'{(“:ro”如果不是x[“RW”]则为True,否则为“”)}{mounts}')
但这不起作用
这是带有连接的原始文件
cmd_out=reduce(lambda acc,x:acc+“-v”+x[“源”]+”:“+x[“目标”]+(“:ro”如果不是x[“RW”]则为True,否则为“”)+”,则为“”)
因此,与使用concatation相比,我希望能够使用f字符串来简化过程并减少错误。有什么想法吗?您正试图在lambda表达式中包含
装载
,但这正是reduce
应该迭代的内容。我不会在这里使用reduce
;改用join
方法
cmd_out = " ".join(f'-v {x["Source"]}:{x["Destination"]}{"" if x["RW"] else ":ro"}'
for x in mounts)
您正试图在lambda表达式中包含
mounts
,但这正是reduce
应该迭代的内容。我不会在这里使用reduce
;改用join
方法
cmd_out = " ".join(f'-v {x["Source"]}:{x["Destination"]}{"" if x["RW"] else ":ro"}'
for x in mounts)
好的,但是您已经删除了
acc
,它也是一个变量,所以我这里的输出缺少这个变量。我和我使用lambda得到了这个值,这个表单不再需要它。除非我误解了,否则我会删除.join
并继续使用lambda
来修复你的代码:cmd_out=reduce(lambda acc,x:f'{acc}-v{x[“Source”]}:{x[“Destination”]}{(“if x[“RW”]else:ro”)},mounts,”
“fixed”不是我会使用的词。您基本上是使用reduce
来重新实现join
。使用join
而不是reduce
和lambda
的问题是,我最终在输出acc
中缺少了一个关键变量join
不允许使用它。acc
只是reduce
从一个迭代到下一个迭代的累积输出join
不需要它,因为它一次组合了所有段。比较“”。将(x代表x在[“1”、“2”、“3”])
与reduce(lambda acc,x:acc+x+”,[“1”、“2”、“3”],”)连接起来。
;唯一的区别是reduce
生成一个尾随空格,您不关心或需要删除它。好的,但是您删除了acc
,它也是一个变量,因此我在这里的输出缺少该变量。我和我使用lambda得到了这个值,这个表单不再需要它。除非我误解了,否则我会删除.join
并继续使用lambda
来修复你的代码:cmd_out=reduce(lambda acc,x:f'{acc}-v{x[“Source”]}:{x[“Destination”]}{(“if x[“RW”]else:ro”)},mounts,”
“fixed”不是我会使用的词。您基本上是使用reduce
来重新实现join
。使用join
而不是reduce
和lambda
的问题是,我最终在输出acc
中缺少了一个关键变量join
不允许使用它。acc
只是reduce
从一个迭代到下一个迭代的累积输出join
不需要它,因为它一次组合了所有段。比较“”。将(x代表x在[“1”、“2”、“3”])
与reduce(lambda acc,x:acc+x+”,[“1”、“2”、“3”],”)连接起来。
;唯一的区别是reduce
生成了一个尾随空间,您不关心或需要删除它。