Structure et fonctionnement des données Python (mémo d'apprentissage Python ③)

Cette fois est un mémo d'apprentissage sur la structure de données des objets manipulés par Python

Méthodes pouvant être utilisées dans les listes

Ajouter un élément

list.append(x) Ajouter un élément à la fin de la liste Équivaut à une [liste (a):] = [x]

list.extend(L) Étendre la liste en ajoutant tous les éléments de la liste donnée L à la fin de la liste Équivalent à a [len (a):] = L

list.insert(i, x) Insère un élément à la position spécifiée. Le premier argument est l'index de l'élément. L'insertion se fait avant cet élément. a.insert (0, x) l'insérera au début de la liste a.insert (len (a), x) équivaut à a.append (x)

Supprimer et récupérer des éléments

list.remove(x) Supprimer le premier élément avec la valeur x Erreur si non présente

list.pop([i]) Supprime l'élément à la position spécifiée de la liste et renvoie cet élément Si aucun index n'est spécifié, retournez le dernier élément et supprimez-le de la liste

list.clear() Supprimer tous les éléments de la liste Équivalent à del a [:]

Autres opérations

list.index() Renvoie l'index du premier élément avec une valeur de x. Erreur si aucun élément de ce type n'existe

list.count(x) Renvoie le nombre de x dans la liste

list.sort(key=None, reverse=False) Trier les objets de liste directement (apporter des modifications directement sans faire une copie de la liste) Le tri peut être personnalisé avec des arguments

list.reverse() Inverser directement l'objet de liste

list.copy() Renvoie une copie superficielle de la liste Équivalent à un [:]

a = [66.25, 333, 333, 1, 1234.5]

print(a.count(333), a.count(66.25), a.count('x'))
# 2 1 0

a.insert(2, -1)
a.append(333)
print(a)
# [66.25, 333, -1, 333, 1, 1234.5, 333]

print(a.index(333))
# 1

a.remove(333)
print(a)
# [66.25, -1, 333, 1, 1234.5, 333]

a.reverse()
print(a)
# [333, 1234.5, 1, 333, -1, 66.25]

a.sort()
print(a)
# [-1, 1, 66.25, 333, 333, 1234.5]

print(a.pop())
# 1234.5

print(a)
# [-1, 1, 66.25, 333, 333]

Utilisez la liste comme une pile

point

Exemple de dernier entré, premier sorti


stack = [3, 4, 5]

stack.append(6)
stack.append(7)

print(stack)
# [3, 4, 5, 6, 7]

print(stack.pop())
# 7

print(stack)
# [3, 4, 5, 6]

print(stack.pop())
# 6

Utiliser la liste comme file d'attente

point

collection.File d'attente avec deque(Premier entré, premier sorti)Implémentation de


from collections import deque

queue = deque(["Bill", "Earl", "Sam"])
queue.append("Andy")
queue.append("Chris")
print(queue.popleft())
# Bill
print(queue.popleft())
# Earl
print(queue)
# deque(['Sam', 'Andy', 'Chris'])

Inclusion de liste

point

Un exemple simple de génération d'une liste de carrés


#Générer une liste de carrés
squares = []
for x in range(10):
    squares.append(x**2)
    
print(squares)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 

#Le processus ci-dessus laisse une variable appelée x
print(x)

#Vous pouvez créer une liste sans effets secondaires en procédant comme suit
squares = list(map(lambda x: x**2, range(10)))

#Si vous écrivez ↑ dans la liste, ce sera comme suit
squares = [x**2 for x in range(10)]

Un exemple un peu plus compliqué


combs = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y]
print(combs)
# [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

#Cela équivaut à
combs = []
for x in [1, 2, 3]:
    for y in [3, 1, 4]:
        if x != y:
            combs.append((x, y))

print(combs)
# [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

Autre utilisation pratique


vec = [-4, -2, 0, 2, 4]
#Générer une nouvelle liste avec des valeurs doublées
double = [x*2 for x in vec]

print(double)
# [-8, -4, 0, 4, 8]

#Filtrer pour supprimer les nombres négatifs
positive_list = [x for x in vec if x >= 0]
print(positive_list)
# [0, 2, 4]

Inclusion de liste imbriquée

point

Permuter les lignes et les colonnes dans un tableau


matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
]

#Permuter les lignes et les colonnes
reversed_matrix = [[row[i] for row in matrix] for i in range(4)]
print(reversed_matrix)
# [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

Exemple de fonction zip


matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
]

print(list(zip(*matrix)))
# [(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]

déclaration del

point

Exemple utilisant l'instruction del


a = [-1, 1, 66.25, 333, 333, 1234.5]

#Spécifié par index
del a[0]

print(a)
# [1, 66.25, 333, 333, 1234.5]

#Spécifié par tranche
del a[2:4]

print(a)
# [1, 66.25, 1234.5]

#Effacer toute la liste
del a[:]

print(a)
# []

#Supprimer la variable entière (après cela, référencer a entraînera une erreur)
del a

Tapez et séquence

point

Opération Taple


#Les taples se composent de valeurs séparées par des virgules (tapple packing)
t = 12345, 54321, 'hello!'

#Le déballage est également possible par la méthode suivante(Déballage de séquence)
x, y, z = t
print(x) # 12345
print(y) # 54321
print(z) # hello!

print(t)
# (12345, 54321, 'hello!')

#Les taples peuvent être imbriqués
u = t, (1, 2, 3, 4, 5)

print(u)
# ((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))

#Taple ne peut pas être changé
# t[0] = 88888

#Les objets modifiables peuvent être stockés
v = ([1, 2, 3], [3, 2, 1])
print(v)
# ([1, 2, 3], [3, 2, 1])

#Taple vide
empty = ()

#Taple avec 1 élément
singleton = 'hello', <-Ajouter une virgule à la fin

Ensemble

point

donner l'exemple


basket = {'apple', 'orage', 'apple', 'pear', 'orange', 'banana'}
print(basket)
# {'banana', 'pear', 'apple', 'orage', 'orange'}

print('orange' in basket) #Jugement d'existence à grande vitesse
# True
print('crabgrass' in basket)
# False

#Définir l'opération en prenant un caractère unique de deux mots
a = set('abracadabra')
b = set('alacazam')

#Caractère unique d'un
print(a)
# {'r', 'a', 'c', 'b', 'd'}

#Caractères qui existent dans a mais pas dans b
print(a - b)
{'r', 'b', 'd'}

#Caractères présents dans a ou b
print(a | b)
# {'z', 'r', 'a', 'c', 'b', 'd', 'l', 'm'}

#Caractères qui existent à la fois dans a et b
print(a & b)
# {'c', 'a'}

#Caractères inhabituels dans a ou b
print(a ^ b)
# {'m', 'b', 'l', 'z', 'd', 'r'}

#Les inclusions définies qui sont similaires aux inclusions de liste sont également prises en charge
a = {x for x in 'abracadabra' if x not in 'abc'}
print(a)
# {'r', 'd'}

dictionnaire

point

Exemple de type de dictionnaire


#Initialisation
tel = {'jack': 4098, 'sape': 4139}

#ajouter à
tel['guido'] = 4127
print(tel) # {'jack': 4098, 'sape': 4139, 'guido': 4127}
print(tel['jack']) # 4098

#Effacer
del tel['sape']
tel['irv'] = 4127
print(tel)
# {'jack': 4098, 'guido': 4127, 'irv': 4127}

#Obtenez une liste de clés
print(list(tel.keys()))
# ['jack', 'guido', 'irv']

#Trier par clé
print(sorted(tel.keys()))
# ['guido', 'irv', 'jack']

#Contrôle d'existence
print('guido' in tel) # True
print('jack' not in tel) # False

# dict()Le constructeur est la clé:À partir d'une séquence de tuples de paires de valeurs
#Construire un dictionnaire
tel2 = dict([('sape', 4139), ('guide', 4127), ('jack', 4098)])
print(tel2)
# {'sape': 4139, 'guide': 4127, 'jack': 4098}

#Les dictionnaires peuvent être générés à partir d'expressions arbitraires qui donnent des clés et des valeurs à l'aide d'inclusions de dictionnaire
print({x: x**2 for x in (2, 4, 6)})
# {2: 4, 4: 16, 6: 36}

#Si la clé est une chaîne, il peut être plus facile de spécifier la paire avec l'argument mot-clé
tel3 = dict(sape=4139, guido=4127, jack=4098)
print(tel3)
# {'sape': 4139, 'guido': 4127, 'jack': 4098}

Technique de boucle

point

knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items():
    print(k, v)

# gallahad the pure
# robin the brave
for i, v in enumerate(['tic', 'tac', 'toe']):
    print(i, v)

# 0 tic
# 1 tac
# 2 toe
questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']

for q, a in zip(questions, answers):
    print('What is your {0}? It is {1}.'.format(q, a))
    
# What is your name? It is lancelot.
# What is your quest? It is the holy grail.
# What is your favorite color? It is blue.
for i in reversed(range(1, 10, 2)):
    print(i)
    
# 9
# 7
# 5
# 3
# 1
basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']

for f in sorted(set(basket)):
    print(f)
    
# apple
# banana
# orange
# pear


import math

raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8]
filtered_data = []
for value in raw_data:
    if not math.isnan(value):
        filtered_data.append(value)
        
print(filtered_data)
# [56.2, 51.7, 55.3, 52.5, 47.8]

À propos des conditions utilisées pour comparer des objets

point

string1, string2, string3 = '', 'Tronbheim', 'Hammer Dance'
non_null = string1 or string2 or string3
print(non_null)
# Tronbheim

Comparaison de séquence, comparaison d'autres types

point

Comparaison d'objets


(1, 2, 3) < (1, 2, 4)
[1, 2, 3] < [1, 2, 4]
'ABC' < 'C' < 'Pascal' < 'Python'
(1, 2, 3, 4) < (1, 2, 4)
(1, 2) < (1, 2, -1)
(1, 2, 3) == (1.0, 2.0, 3.0)
(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)

Recommended Posts

Structure et fonctionnement des données Python (mémo d'apprentissage Python ③)
Structure de données Python et implémentation interne ~ Liste ~
Classe Python (mémo d'apprentissage Python ⑦)
Module Python (mémo d'apprentissage Python ④)
[Tutoriel Python] Structure des données
Mémo d'opération de décorateur Python
[Python] Mémo de conversion entre les données temporelles et les données numériques
structure de données Python push pop
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer chapitres 1 et 2
Mémo tranche python et rubis
Notes d'apprentissage sur l'analyse des données Python
Mémo récapitulatif des types de données Python
Résolvez le livre en spirale (algorithme et structure de données) avec python!
Syntaxe de contrôle Python, fonctions (mémo d'apprentissage Python ②)
Différence entre java et python (mémo)
[Python] Mémo d'opération de pandas DataFrame
Mémo «Chapitre 5 - Dictionnaires et structuration des données»
[python] week1-3: Type de nombre et opération
Hashing de données en R et Python
Mémo Python ① Opérations sur les dossiers et fichiers
Algorithme de structure de données de livre d'images Python
Mémo d'apprentissage de la planification des sections ~ par python ~
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Mémo Python
mémo python
Mémo Python
mémo python
apprentissage de python
Mémo Python
Mémo Python
Construction de pipeline de données avec Python et Luigi
Bases statistiques et Python, graphisme, etc. (mémo)
Numéros, chaînes, types de listes Python (mémo d'apprentissage Python ①)
[Mémo du débutant Python] chaîne de caractères python, opération de chemin
Python: prétraitement en machine learning: acquisition de données
[Python] Première analyse de données / apprentissage automatique (Kaggle)
Représentez facilement des données graphiques dans le shell et Python
Créer un environnement pour Python et l'apprentissage automatique (macOS)
Analyse de données à partir de python (pré-traitement des données-apprentissage automatique)
Bibliothèque standard Python: seconde moitié (mémo d'apprentissage Python ⑨)
Python: prétraitement dans l'apprentissage automatique: conversion de données
Compressez les données python et écrivez sur sqlite
Mémo d'étude Python & Machine Learning ③: Réseau neuronal
Mémo d'étude Python & Machine Learning ④: Machine Learning par rétro-propagation
Mémo d'étude Python & Machine Learning ⑥: Reconnaissance des nombres
Communication de données chiffrées entre Python et C #
Bibliothèque standard Python: première moitié (mémo d'apprentissage Python ⑧)
Mémo de l'opération de position de pixel pour les données d'image avec Python (numpy, cv2)
Créez rapidement un environnement python pour le Deep Learning / Data Science (Windows)
Créez un arbre de décision à partir de 0 avec Python et comprenez-le (4. Structure des données)
Python: prétraitement en machine learning: gestion des données manquantes / aberrantes / déséquilibrées
[Python] Mémo sur le dictionnaire
Note d'étude LPIC201
Résumé de la correspondance entre les opérations de tableau ruby et python
[Python] Note d'apprentissage 1
mémo débutant python (9.2-10)
Notes d'apprentissage Python
[python] Opération vectorielle
Variables Python et types de données appris avec la chimio-automatique