2017-08-30 9 views
0

Quelle serait la manière la plus propre de manipuler/utiliser/supprimer une partie d'une variable tout en conservant la variable d'origine intacte.Manipuler une partie de variable tout en conservant l'original intact

Disons que je voulais la valeur dans la liste suivante qui correspond à la valeur la plus élevée numérique

Ainsi, par exemple:

max([1, 2, '3a', '10b']) 

doit être évalué comme

max([1, 2, 3, 10]) 

et la valeur '10b' doit être retourné

Répondre

2

approche élargie en utilisant la fonction re.search():

import re 

max_item = max([1, 2, '3abc', '10bc'], key=lambda n: int(re.search(r'\d+', str(n)).group(0))) 
print(max_item) 

La sortie:

10bc 
6

Le 012 La fonctionaccepte un argument key, qui est utilisé pour calculer la valeur qui sera utilisée pour la comparaison. .: par exemple

max([1, 2, '3a', '10b'], key=lambda x: x if isinstance(x, int) else int(x[:-1])) 

Remplissez votre propre fonction de conversion pour l'y lambda.

+1

Suppose que le dernier caractère est une lettre, suppose pas non plus 'float's (peuvent ou non être des hypothèses correctes –

+2

D'où la dernière phrase; Je peux seulement aller sur le petit peu d'information donnée ici ... – deceze

+0

Ceci est parfait, peut travailler avec la fonction lambda pour le réparer. – AK47