<p>正如在评论中所说的,只需使用盯着的论点
要在“u”中抛出剩余的参数:</p>
<pre><code>lambda x, *_: x*2
</code></pre>
<p>如果您在<code>map</code>语句中使用这些语句,因为Python不会将元组中的每个项映射到不同的参数,那么可以使用<code>itertools.starmap</code>,这样做:</p>
^{pr2}$
<p>但是在<code>sort</code>或<code>sorted</code>的关键参数上没有等价的方法。在</p>
<p>如果不在元组中间使用参数,
只需编号:</p>
^{3}$
<p>如果您收到来自某个linter工具的关于未使用的参数的投诉:linter的目的是建议mor可读的代码。我个人的偏好是不让它影响实践性,如果发生这种情况,我会毫不犹豫地关闭这行代码的连接。在</p>
<p>否则,你就真的要做“美丽”的事情了——如果是为了取悦你和你的团队,或者仅仅为了取悦皮匠,你就要用理智。在本例中,它是编写一个完整的函数,并假装
使用未使用的参数。在</p>
<pre><code>def my_otherwise_lambda(x, unused_1, unused_2, w):
"""My make linter-happy docstring here"""
unused_1, unused_2 # Use the unused variables
return 2 * x + w
</code></pre>
<p>除了linter有问题外,其目的是使lambda参数可读,那么无论如何,建议使用一个完整的函数。<code>lambda</code>为了保证可读性,在v.3.0中几乎要被剥离。在</p>
<p>最后,但并非最不重要的是,如果元组中值的语义<em>有意义,</em>也许您应该考虑使用一个类来保存其中的值。通过这种方式,您只需将该类的实例传递给lambda函数,然后通过它们各自的名称检查值。在</p>
<p>Namedtuple是一种可以很好地工作的方法:
从集合导入namedtuple</p>
<pre><code>vector = namedtuple("vector", "x y z")
mydata = [(1,10,100), (2,20,200), (3,30,300)]
mydata = [vector(*v) for v in mydata]
sorted_data = sorted(mydata, lambda v: v.x * 2)
</code></pre>