Python 如何在地图中将项目作为参数列表传递?

Python 如何在地图中将项目作为参数列表传递?,python,map,arguments,Python,Map,Arguments,这是我的一段代码。Lambda接受3个参数,我想将它们作为位置参数的元组传递,但显然map将它们作为单个参数提供 如何提供底部的元组作为参数列表?(我知道我可以重写lambda,但它的可读性不好) 试着把帕伦斯放在他们周围 adds = map((lambda (j, f, a): j.join([f.format(i) for i in parse.options[a]]) if parse.options[a] else ''), ((' ', ' -not -path "{0}"

这是我的一段代码。Lambda接受3个参数,我想将它们作为位置参数的元组传递,但显然
map
将它们作为单个参数提供

如何提供底部的元组作为参数列表?(我知道我可以重写lambda,但它的可读性不好)


试着把帕伦斯放在他们周围

adds = map((lambda (j, f, a):
  j.join([f.format(i) for i in parse.options[a]]) if parse.options[a] else ''),
  ((' ', ' -not -path "{0}" ', 'exclude'),
  (' -or ', '-path "{0}"', 'include')))

试着把帕伦斯放在他们周围

adds = map((lambda (j, f, a):
  j.join([f.format(i) for i in parse.options[a]]) if parse.options[a] else ''),
  ((' ', ' -not -path "{0}" ', 'exclude'),
  (' -or ', '-path "{0}"', 'include')))

一种方法是以列表形式重写:

adds = [
  j.join([f.format(i) for i in parse.options[a]]) if parse.options[a] else ''
  for j, f, a in
  ((' ', ' -not -path "{0}" ', 'exclude'),
  (' -or ', '-path "{0}"', 'include'))]

一种方法是以列表形式重写:

adds = [
  j.join([f.format(i) for i in parse.options[a]]) if parse.options[a] else ''
  for j, f, a in
  ((' ', ' -not -path "{0}" ', 'exclude'),
  (' -or ', '-path "{0}"', 'include'))]
说明:

map(函数、iterable等)

将函数应用于iterable的每个项并返回结果列表如果传递了额外的iterable参数,则函数必须接受这么多的参数,并并行应用于所有iterable中的项。如果一个iterable比另一个iterable短,则假定扩展为无项。如果函数为None,则假定恒等式函数;如果有多个参数,map()将返回一个由元组组成的列表,其中包含来自所有iterables的相应项(一种转置操作)。iterable参数可以是序列或任何iterable对象;结果总是一个列表

您需要将参数放置在并行列表或元组中,并将它们作为3个可重用项传递给。

描述:

map(函数、iterable等)

将函数应用于iterable的每个项并返回结果列表如果传递了额外的iterable参数,则函数必须接受这么多的参数,并并行应用于所有iterable中的项。如果一个iterable比另一个iterable短,则假定扩展为无项。如果函数为None,则假定恒等式函数;如果有多个参数,map()将返回一个由元组组成的列表,其中包含来自所有iterables的相应项(一种转置操作)。iterable参数可以是序列或任何iterable对象;结果总是一个列表


您需要将参数放置在并行列表或元组中,并将其作为3个iterables传递。

另一种方法是使用itertools.starmap,它接受预压缩的参数:

adds = itertools.starmap((lambda j, f, a:
    j.join([f.format(i) for i in parse.options[a]]) if parse.options[a] else ''),
    ((' ', ' -not -path "{0}" ', 'exclude'),
    (' -or ', '-path "{0}"', 'include')))

另一种方法是使用itertools.starmap,它接受预压缩参数:

adds = itertools.starmap((lambda j, f, a:
    j.join([f.format(i) for i in parse.options[a]]) if parse.options[a] else ''),
    ((' ', ' -not -path "{0}" ', 'exclude'),
    (' -or ', '-path "{0}"', 'include')))

伟大的真不敢相信这么简单!请注意,这种方法在Python>3.0中无效,不再支持这种类型的参数解构。函数f(A,(b,c):返回A+b+c需要编写f(A,b_c):b,c=b_c返回A+b+c问候,RickardGREAT!真不敢相信它这么简单!请注意,这种方法在Python>3.0中无效,不再支持这种类型的参数解构。函数f(A,(b,c):return a+b+c需要写入f(a,b_c):b,c=b_c return a+b+c问候,Rickard是的,这是正确的,但代码(元组)将不可读。是的,这是正确的,但代码(元组)将不可读。