我有一个清单l和一个函数f。f不是严格增加或减少。如何在列表中找到f(item)最小的项目?例如,假设列表为:
l = [1, 2, 3, 4]
并且list(f(x)for x in l)是:
[2, 9, 0, 3]
f(3)小于其他任何一个的f,因此应打印“ 3”。最简单的方法是什么?我最初尝试:
min(f(x) for x in l)
但是,这0不能3。如果我是为了提高可读性而不是为了简洁起见,我会这样做:
index = 0
smallest = f(l[0])
for i in range(len(l)):
    value = f(l[i])
    if value < smallest:
        smallest = value
        index = i
很好,但是对于代码高尔夫球来说太可怕了。即使打了高尔夫球
i,s=0,f(l[0])
for x in range(len(l)):
 v=f(l[x])
 if v<s:s,i=v,x
这是一个不好的解决方案。我能想到的最短的解决方案是:
g=[f(x)for x in l];print(l[g.index(min(g))])
(44字节)如何进一步打高尔夫球?
                  @vaultah将其发布为答案。
                
                
                  
                    —
                    NoOneIsHere16年
                    
                  
                
              
                  @ KevinLau-notKenny这是一个提示问题。那是话题。
                
                
                  
                    —
                    NoOneIsHere 
                    
                  
                
              
                  @trichoplax实际上我认为就是这样的:meta.codegolf.stackexchange.com/a/1724/31625
                
                
                  
                    —
                    FryAmTheEggman 
                    
                  
                
              
                  这是一个有趣的话题。也许使它通用,而不仅限于Python?看看如何使用不同的语言来做可能会很有趣
                
                
                  
                    —
                    Luis Mendo 
                    
                  
                
              
min(l,key=f)。