J'ai une liste l
et une fonction f
. f
n'augmente ni ne diminue strictement. Comment trouver l'élément de la liste dont f(item)
le plus petit est? Par exemple, supposons que la liste soit:
l = [1, 2, 3, 4]
et list(f(x)for x in l)
c'est:
[2, 9, 0, 3]
f(3)
est plus petit que f de tous les autres, il devrait donc afficher "3". Quelle est la manière la plus courte de procéder? J'ai d'abord essayé:
min(f(x) for x in l)
Mais cela donne 0
, non 3
. Si je tournais pour plus de lisibilité, pas de concision, je ferais:
index = 0
smallest = f(l[0])
for i in range(len(l)):
value = f(l[i])
if value < smallest:
smallest = value
index = i
C'est bien, mais horrible pour le code-golf. Même s'il a été joué au golf
i,s=0,f(l[0])
for x in range(len(l)):
v=f(l[x])
if v<s:s,i=v,x
C'est une mauvaise solution. La solution la plus courte à laquelle je peux penser est:
g=[f(x)for x in l];print(l[g.index(min(g))])
(44 octets) Comment puis-je continuer à jouer au golf?
min(l,key=f)
.