Maison développement back-end Tutoriel Python Comment Python mappe les noms en éléments d'une séquence (code)

Comment Python mappe les noms en éléments d'une séquence (code)

Oct 23, 2018 pm 04:14 PM
python

Le contenu de cet article explique comment Python mappe les noms aux éléments de séquence (code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

1. Exigences

Notre code accède aux tuples de liste par position (c'est-à-dire index ou indice), mais parfois cela rend le code modifié. . Nous voulons pouvoir accéder aux éléments par leur nom, réduisant ainsi la dépendance à la position dans la structure.

2. Solution

Par rapport aux tuples ordinaires, collections.namedtuple() (nommé tuple) n'ajoute que très peu de frais généraux pour offrir ces commodités. En fait, collections.namedtuple() est une méthode d'usine qui renvoie une sous-classe du type tuple standard en Python. Nous lui fournissons un nom de type et les champs correspondants, et il renvoie une classe instanciable, transmettant les valeurs des champs que vous avez définis, etc.

from collections import namedtuple
Subscriber=namedtuple('Subsciber',['addr','joined'])
sub=Subscriber("1782980833@qq.com","2018-10-23")
print(sub)
print(sub.addr)
print(sub.joined)
print(len(sub))
addr,joined=sub
print(addr)
print(joined)
#下面错误,以为你namedtuple是不可变的
#sub.joined="2019"

Résultat :

Subsciber(addr='1782980833@qq.com', joined='2018-10-23')
1782980833@qq.com
2018-10-23
2
1782980833@qq.com
2018-10-23

Bien qu'une instance de nomméetuple ressemble à une instance de classe ordinaire, ses instances sont interchangeables avec les tuples ordinaires et prennent en charge toutes les opérations prises en charge par les tuples ordinaires.

Le rôle principal des tuples nommés est de découpler le code de la position des éléments qu'il contrôle. Ainsi, si vous obtenez une grande liste de tuples à partir d'un appel à la base de données et que vous accédez aux éléments par leur position, alors si vous ajoutez une nouvelle colonne au formulaire, le code plantera, mais si les tuples renvoyés sont d'abord convertis en tuples nommés et il n'y aura aucun problème.

Pour illustrer le problème, voici du code utilisant des tuples simples :

def compute_cost(records):
    total=0.0
    for rec in records:
        total+=rec[1]*rec[2]
    return total

Le référencement des éléments par position rend souvent le code moins expressif et également une structure spécifique très dépendante des enregistrements.

Ce qui suit est la version utilisant des tuples nommés :

from collections import namedtuple
Stock=namedtuple('Stock',['name','shares','price'])
def compute_cost(records):
    total=0.0
    for rec in records:
        s=Stock(*rec)
        total+=s.shares*s.price
    return total

3 Analyse Une utilisation possible de

namedtuple est en remplacement d'un. dictionnaire , ce dernier nécessite plus d’espace de stockage. Par conséquent, si vous souhaitez créer un grand dictionnaire de conception de données, il sera plus efficace d'utiliser NameTuple, mais veuillez noter que contrairement aux dictionnaires, NameTuple est immuable.

Si vous devez modifier des attributs, vous pouvez le faire en utilisant la méthode nomméetuple instance_replace(). Cette méthode crée un nouveau tuple nommé et remplace les valeurs correspondantes.

from collections import namedtuple
Subscriber=namedtuple('Subsciber',['addr','joined'])
sub=Subscriber("1782980833@qq.com","2018-10-23")

print(sub)

sub=sub._replace(joined="2018-10-24")
print(sub)

Résultat :

Subsciber(addr='1782980833@qq.com', joined='2018-10-23')
Subsciber(addr='1782980833@qq.com', joined='2018-10-24')

_La méthode replace() a une utilisation subtile, c'est-à-dire qu'elle peut être utilisée comme un moyen simple de remplir des fonctionnalités qui sont facultatif ou manquant Un tuple nommé de champs. Pour ce faire, créez d'abord un tableau prototype contenant les valeurs par défaut, puis utilisez la méthode _replace() pour créer une nouvelle instance et remplacer les valeurs correspondantes.

from collections import namedtuple
Subscriber=namedtuple('Subsciber',['addr','joined','age'])
sub=Subscriber("",None,0)

def dict_to_stock(s):
    return sub._replace(**s)

a={"addr":"111111@qq.com","joined":"1111-11-11","age":11}
a=dict_to_stock(a)
print(a)

b={"addr":"111111@qq.com","joined":"1111-11-11"}
b=dict_to_stock(b)
print(b)

Résultat :

Subsciber(addr='111111@qq.com', joined='1111-11-11', age=11)
Subsciber(addr='111111@qq.com', joined='1111-11-11', age=0)

Enfin, et c'est assez important, il faut noter que si notre objectif est de définir une structure de données efficace, diverses instances seront modifiées dans le futur , alors utiliser nametuple n'est pas le meilleur choix. Au lieu de cela, vous pouvez envisager une classe qui utilise l'attribut __slots__.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Guide de construction Mejiro Ryan | Uma musume joli derby
1 Il y a quelques mois By Jack chen
Rimworld Odyssey Comment pêcher
4 Il y a quelques semaines By Jack chen
Comment dépanner une erreur 'Connexion refusée'?
1 Il y a quelques mois By 百草

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1505
276
Python Connexion à SQL Server PyoDBC Exemple Python Connexion à SQL Server PyoDBC Exemple Jul 30, 2025 am 02:53 AM

Installez PYODBC: utilisez la commande PiPInstallpyodbc pour installer la bibliothèque; 2. Connectez SQLServer: utilisez la chaîne de connexion contenant le pilote, le serveur, la base de données, l'UID / PWD ou TrustEd_Connection via la méthode pyoDBC.Connect () et prendre en charge l'authentification SQL ou l'authentification Windows respectivement; 3. Vérifiez le pilote installé: exécutez pyodbc.Drivers () et filtrez le nom du pilote contenant «SQLServer» pour vous assurer que le nom du pilote correct est utilisé tel que «ODBCDriver17 pour SQLServer»; 4. Paramètres clés de la chaîne de connexion

Optimisation de Python pour les opérations liées à la mémoire Optimisation de Python pour les opérations liées à la mémoire Jul 28, 2025 am 03:22 AM

PythonCanBeoptimizedFormemory-Boundoperations AdreductoverHeadHroughGenerators, EfficientDatastructures et ManagingObjectliFetimes.first, useGeneratorsInSteadofListStoproceSlargedataseSeItematatime, EvitingLoadingEnteryToMeToMeMory.

Python Shutil rmtree Exemple Python Shutil rmtree Exemple Aug 01, 2025 am 05:47 AM

ShutLil.rmtree () est une fonction de Python qui supprime récursivement l'intégralité de l'arborescence du répertoire. Il peut supprimer les dossiers spécifiés et tous les contenus. 1. Utilisation de base: utilisez ShutLil.rmtree (Path) pour supprimer le répertoire, et vous devez gérer FileLenotFoundError, PermissionError et autres exceptions. 2. Application pratique: vous pouvez effacer les dossiers contenant des sous-répertoires et des fichiers en un seul clic, tels que des données temporaires ou des répertoires mis en cache. 3. Remarques: L'opération de suppression n'est pas restaurée; FilenotFoundError est lancé lorsque le chemin n'existe pas; Il peut échouer en raison d'autorisations ou d'occupation des fichiers. 4. Paramètres facultatifs: les erreurs peuvent être ignorées par ignore_errors = true

Exemple de pool de connexion Python Psycopg2 Exemple de pool de connexion Python Psycopg2 Jul 28, 2025 am 03:01 AM

Utilisez psycopg2.pool.simpleconnectionpool pour gérer efficacement les connexions de la base de données et éviter les frais généraux de performances causés par la création et la destruction de connexions fréquentes. 1. Lors de la création d'un pool de connexions, spécifiez le nombre minimum et maximum de connexions et de paramètres de connexion de base de données pour vous assurer que le pool de connexions est initialisé avec succès; 2. Obtenez la connexion via getConn () et utilisez putConn () pour renvoyer la connexion au pool après avoir exécuté l'opération de base de données. L'appel constamment conn.close () est interdit; 3. SimpleconnectionPool est en file et convient aux environnements multi-threads; 4. Il est recommandé d'implémenter un gestionnaire de contexte en combinaison avec le gestionnaire de contexte pour s'assurer que la connexion peut être renvoyée correctement lorsque des exceptions sont notées;

Python iter et exemple suivant Python iter et exemple suivant Jul 29, 2025 am 02:20 AM

Iter () est utilisé pour obtenir l'objet Iterator, et Next () est utilisé pour obtenir l'élément suivant; 1. Utilisez Iterator () pour convertir des objets itérables tels que les listes en itérateurs; 2. Appelez Next () pour obtenir des éléments un par un et déclenchez l'exception de l'arrêt lorsque les éléments sont épuisés; 3. Utilisez Suivant (iterator, par défaut) pour éviter les exceptions; 4. Les itérateurs personnalisés doivent implémenter les méthodes __iter __ () et __Next __ () pour contrôler la logique d'itération; L'utilisation de valeurs par défaut est un moyen courant de parcourir la traversée et l'ensemble du mécanisme est concis et pratique.

Qu'est-ce que l'arbitrage statistique dans les crypto-monnaies? Comment fonctionne l'arbitrage statistique? Qu'est-ce que l'arbitrage statistique dans les crypto-monnaies? Comment fonctionne l'arbitrage statistique? Jul 30, 2025 pm 09:12 PM

L'introduction à l'arbitrage statistique L'arbitrage statistique est une méthode commerciale qui capture l'inadéquation des prix sur le marché financier basé sur des modèles mathématiques. Sa philosophie principale découle de la régression moyenne, c'est-à-dire que les prix des actifs peuvent s'écarter des tendances à long terme à court terme, mais reviendront éventuellement à leur moyenne historique. Les traders utilisent des méthodes statistiques pour analyser la corrélation entre les actifs et rechercher des portefeuilles qui changent généralement de manière synchrone. Lorsque la relation de prix de ces actifs est anormalement déviée, des opportunités d'arbitrage se présentent. Sur le marché des crypto-monnaies, l'arbitrage statistique est particulièrement répandu, principalement en raison de l'inefficacité et des fluctuations drastiques du marché lui-même. Contrairement aux marchés financiers traditionnels, les crypto-monnaies fonctionnent 24h / 24 et leurs prix sont très susceptibles de briser les nouvelles, les sentiments des médias sociaux et les améliorations technologiques. Cette fluctuation des prix constante crée fréquemment un biais de prix et fournit aux arbitrageurs un

Comment exécuter des requêtes SQL dans Python? Comment exécuter des requêtes SQL dans Python? Aug 02, 2025 am 01:56 AM

Installer le pilote de base de données correspondant; 2. Utilisez Connect () pour se connecter à la base de données; 3. Créez un objet de curseur; 4. Utilisez EXECUTE () ou Execumany () pour exécuter SQL et utiliser une requête paramétrée pour empêcher l'injection; 5. Utilisez fetchall (), etc. pour obtenir des résultats; 6. commit () est requis après modification; 7. Enfin, fermez la connexion ou utilisez un gestionnaire de contexte pour le gérer automatiquement; Le processus complet garantit que les opérations SQL sont sûres et efficaces.

Comment créer un environnement virtuel à Python Comment créer un environnement virtuel à Python Aug 05, 2025 pm 01:05 PM

Pour créer un environnement virtuel Python, vous pouvez utiliser le module VENV. Les étapes sont: 1. Entrez le répertoire de projet pour exécuter l'environnement Python-Mvenvenv pour créer l'environnement; 2. Utilisez SourceEnv / Bin / Activer sur Mac / Linux et Env \ Scripts \ Activate sur Windows; 3. Utilisez le package d'installation PiPinstall, PipFreeze> exigence.txt pour exporter les dépendances; 4. Veillez à éviter de soumettre l'environnement virtuel à GIT et confirmez qu'il est dans le bon environnement pendant l'installation. Les environnements virtuels peuvent isoler les dépendances du projet pour prévenir les conflits, en particulier adaptés au développement multi-projets, et les éditeurs tels que PyCharm ou VScode sont également

See all articles