2009-08-27 8 views
14

Qu'est-ce qu'un code à une ligne pour définir une chaîne dans Python à la chaîne, 0 si la chaîne est vide?Code Python à un interligne pour mettre la chaîne à 0 si vide

# line_parts[0] can be empty 
# if so, set a to the string, 0 
# one-liner solution should be part of the following line of code if possible 
a = line_parts[0] ... 
+0

@biznez N'oubliez pas que vous pouvez accepter une réponse. –

+0

Je dirais: * devrait * accepter une réponse. C'est seulement poli, après que les gens ont mis de l'effort en votre nom. –

+0

Voulez-vous dire que la chaîne est vide (chaîne de longueur zéro) ou ** Aucun **? –

Répondre

59
a = line_parts[0] or "0" 

C'est l'une des plus belles expressions idiomatiques Python, le rendant facile à fournir des valeurs par défaut. Il est souvent utilisé comme ceci pour les valeurs par défaut des fonctions:

def fn(arg1, arg2=None): 
    arg2 = arg2 or ["weird default value"] 
+1

+1 J'ai appris quelque chose de nouveau. –

+5

Pour clarifier, si ce n'était pas clair de la réponse de Ned: quand il s'agit de chaînes, une chaîne vide évalue toujours à False, et une chaîne non vide évalue toujours à True - c'est pourquoi 'or' fonctionne parfaitement dans cette situation . –

+6

Lorsque vous utilisez ceci, assurez-vous que vous ne vous attendez jamais à ce que 'arg2' soit 0 ou '' .. –

11
a = '0' if not line_parts[0] else line_parts[0] 
+7

Serait plus clair que: a = line_parts [0] si line_parts [0] else '0' – recursive

Questions connexes