Conseils pour rédiger un aplatissement concis en python

Si vous utilisez python2, vous pouvez écrire intelligemment avec sum!

J'ai réalisé que je pourrais écrire intelligemment si je pensais qu'il n'y avait qu'une manière délicate de le faire.

L'ajout de liste à liste est pris en charge en python

[1,2,3] + [4,5,6] => [1,2,3,4,5,6]

Profitant du fait que la fonction somme peut spécifier la valeur initiale du deuxième argument,

data = [[1,2,3], [4,5,6], [7,8,9]]

sum(data, [])

Vous pouvez écrire comme ça.

Cependant, il est un peu inflexible que les taples et les générateurs ne soient pas pris en charge à moins qu'il ne s'agisse d'une liste.

Supplément 1

Dans la série python3, sum semble vérifier le type, donc cette méthode ne peut pas être utilisée. Je suis désolé.

Supplément 2

En utilisant cela, je me suis demandé s'il serait possible de traiter toutes les instances qui implémentent __add__ avec sum.

>>> a = [1,2,3]
>>> data = [a, [4,5,6], [7,8,9]]
>>> sum(data,[])
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a
[1, 2, 3]
>>> empty = []
>>> sum(data,empty)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> empty
[]
>>>

En interne, on s'attend à ce que le résultat de l'addition soit utilisé pour le traitement.

Donc, si vous réussissez une classe avec __add__ comme indiqué ci-dessous,

>>> class A:
...   def __add__(self, target):
...     self.target = target
...     return 100
...
>>> a = A()
>>> sum([5,10,15,20],a)
145
>>> a.target
5

... Eh bien, je comprends que vous ne devriez pas faire de __add__ une implémentation destructrice.

Recommended Posts

Conseils pour rédiger un aplatissement concis en python
Je veux écrire en Python! (3) Utiliser des simulacres
Dans la commande python, python pointe vers python3.8
Aplatir en Python
Aplatir en python
Ecrire le test dans la docstring python
Divers commentaires à écrire dans le programme
Comment écrire Ruby to_s en Python
Le 15e comment écrire un problème de référence en temps réel hors ligne en Python
J'ai écrit le code pour écrire le code Brainf * ck en python
Le 14ème problème de référence d'écriture en temps réel hors ligne en python
Le 18ème comment écrire un problème de référence en temps réel hors ligne en Python
Comment utiliser la bibliothèque C en Python
17ème problème de référence d'écriture en temps réel hors ligne implémenté en Python
Comment écrire le bon shebang dans les scripts Perl, Python et Ruby
Pour remplacer dynamiquement la méthode suivante en python
Ecrire Python dans MySQL
Dessinez des graphiques dans Julia ... Laissez les graphiques à Python
Comment obtenir les fichiers dans le dossier [Python]
Pour écrire dans Error Repoting en Python sur GAE
Je veux afficher la progression en Python!
Je veux écrire en Python! (1) Vérification du format de code
20e Comment écrire des problèmes en temps réel hors ligne en Python
Comment récupérer la nième plus grande valeur en Python
Comment obtenir le nombre de chiffres en Python
Comment écrire une concaténation de chaînes sur plusieurs lignes en Python
Comment connaître le répertoire actuel en Python dans Blender
Je veux écrire en Python! (2) Écrivons un test
Convertissez l'image au format .zip en PDF avec Python
Ecrire des caractères dans l'illustration de la carte avec OpenCV python
Écrire des tests en Python pour profiler et vérifier la couverture
Écrire des données dans KINTONE à l'aide du module de requêtes Python
Ecrire un histogramme à l'échelle logarithmique sur l'axe des x en python
Comment utiliser le modèle appris dans Lobe en Python
[Python] Comment afficher les valeurs de liste dans l'ordre
Pour faire l'équivalent de Ruby ObjectSpace._id2ref en Python
Je veux utiliser le jeu de données R avec python
Python Open CV a essayé d'afficher l'image sous forme de texte.
Ecrire des filtres Pandec en Python
Pour vider stdout en Python
Écrire une distribution bêta en Python
Connectez-vous au site Web en Python
Parler avec Python [synthèse vocale]
Écrire en csv avec Python
Comment développer en Python
Publier sur Slack en Python
Comment écrire une validation personnalisée dans Django REST Framework
[python] Comment vérifier si la clé existe dans le dictionnaire
Sortie "Dessiner fougère par programmation" dans le processus de dessin en Python
Comment déboguer une bibliothèque Python standard dans Visual Studio
Comment utiliser la méthode __call__ dans la classe Python
Changer la destination de sortie standard en un fichier en Python
Ecrire un programme python pour trouver la distance d'édition [python] [distance Levenshtein]
[Python] Comment écrire une instruction if en une phrase.
Différentes façons de calculer la similitude entre les données avec python
Comment obtenir la dernière (dernière) valeur d'une liste en Python
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
Je ne voulais pas écrire la clé AWS dans le programme