Lorsque vous voulez imprimer un tas de variables en Python, vous avez tout à fait quelques options, telles que:Où est l'objet raise en Python?
for i in range(len(iterable)):
print iterable[i].name
OU
map(lambda i: sys.stdout.write(i.name), iterable)
La raison pour laquelle j'utilise sys.stdout.write au lieu de print dans le second exemple est que lambdas n'acceptera pas l'impression, mais sys.stdout.write sert le même but.
Vous pouvez également imprimer sous condition avec l'opérateur ternaire:
map(lambda n: None if n % 2 else sys.stdout.write(str(n)), range(1, 100))
Il serait vraiment pratique si je pouvais vérifier une séquence entière pour une condition qui justifierait une exception de telle manière:
map(lambda o: raise InvalidObjectError, o.name if not o.isValid else o(), iterable)
Mais cela ne fonctionne pas. Existe-t-il un tel objet pour relancer en Python, et si oui, où est-ce?
-1: Wow c'est tout mauvais. S'il vous plaît ne jouez pas au golf de code comme ça. Merci de ne pas rendre Python illisible. Quel est le problème avec le premier style? Cela avait du sens. Pourquoi utiliser des techniques de cartes bizarres qui rendent les choses obscures? Quel est le but de toute cette obscurité? Ce ne sera pas plus rapide. Ce ne sera pas plus facile à lire. Pourquoi faire ceci? –
@S. Lott les deux premiers exemples de cartes sont certes inutiles, mais ils étaient seulement pour démontrer sys.stoud.write et la façon dont je veux utiliser augmenter. Mais je ne vois pas pourquoi la troisième carte serait mauvaise si c'était possible. – cory
Pourquoi utiliser 'sys.stdout.write' quand vous pouvez utiliser' from __future__ import print_function'? –