Auteur | Radis
Source: | Ragoût de radis
Aujourd'hui, nous nous concentrons sur les applications génériques Python Fragment de code,Allons - y ensemble.
Commençons par une liste des structures de données les plus couramment utilisées
Supposons que nous soyons Python Il y a deux listes,Nous voulons les combiner dans un dictionnaire,Un des éléments de la liste sert de clé pour le Dictionnaire,L'autre comme valeur.Ça marche. Python Un problème très courant avec l'écriture de code
Mais pour résoudre ce problème,,Nous devons réfléchir à quelques limites,Comme la taille de deux listes,Types d'éléments dans les deux listes,Et s'il y a des éléments en double,Surtout les éléments que nous utilisons comme key Heure.Nous pouvons utiliser zip Attendez que les fonctions intégrées résolvent ces problèmes
keys_list = ['A', 'B', 'C']
values_list = ['blue', 'red', 'bold']
#There are 3 ways to convert these two lists into a dictionary
#1- Using Python's zip, dict functionz
dict_method_1 = dict(zip(keys_list, values_list))
#2- Using the zip function with dictionary comprehensions
dict_method_2 = {key:value for key, value in zip(keys_list, values_list)}
#3- Using the zip function with a loop
items_tuples = zip(keys_list, values_list)
dict_method_3 = {}
for key, value in items_tuples:
if key in dict_method_3:
pass # To avoid repeating keys.
else:
dict_method_3[key] = value
Une autre tâche courante est lorsque nous avons deux listes ou plus ,Nous voulons les rassembler tous dans une grande liste,Tous les premiers éléments d'une liste plus petite forment la première liste d'une liste plus grande
Par exemple,Si nous avions 4 Liste (s) [1,2,3], ['a','b','c'], ['h','e','y'] Et [4,5, 6],Nous voulons créer une nouvelle liste pour ces quatre listes;Ce sera [[1,'a','h',4], [2,'b','e',5], [3,'c','y',6]]
def merge(*args, missing_val = None):
#missing_val will be used when one of the smaller lists is shorter tham the others.
#Get the maximum length within the smaller lists.
max_length = max([len(lst) for lst in args])
outList = []
for i in range(max_length):
result.append([args[k][i] if i < len(args[k]) else missing_val for k in range(len(args))])
return outList
Cet ensemble de tâches de liste quotidienne est une tâche de tri , Selon le type de données de l'élément contenu dans la Liste ,Nous allons les trier un peu différemment.
dicts_lists = [
{
"Name": "James",
"Age": 20,
},
{
"Name": "May",
"Age": 14,
},
{
"Name": "Katy",
"Age": 23,
}
]
#There are different ways to sort that list
#1- Using the sort/ sorted function based on the age
dicts_lists.sort(key=lambda item: item.get("Age"))
#2- Using itemgetter module based on name
from operator import itemgetter
f = itemgetter('Name')
dicts_lists.sort(key=f)
Nous sommes souvent confrontés à des listes contenant des chaînes,Il nous faut l'ordre alphabétique、La longueur ou tout autre facteur que nous voulons ou dont notre application a besoin pour trier ces listes
my_list = ["blue", "red", "green"]
#1- Using sort or srted directly or with specifc keys
my_list.sort() #sorts alphabetically or in an ascending order for numeric data
my_list = sorted(my_list, key=len) #sorts the list based on the length of the strings from shortest to longest.
# You can use reverse=True to flip the order
#2- Using locale and functools
import locale
from functools import cmp_to_key
my_list = sorted(my_list, key=cmp_to_key(locale.strcoll))
Parfois, Nous pourrions avoir besoin d'utiliser une liste pour trier une autre liste ,Donc,,Nous aurons une liste de nombres(Index) Et une liste que nous voulons trier avec ces index
a = ['blue', 'green', 'orange', 'purple', 'yellow']
b = [3, 2, 5, 4, 1]
#Use list comprehensions to sort these lists
sortedList = [val for (_, val) in sorted(zip(b, a), key=lambda x: \
x[0])]
La dernière tâche du fragment de code de liste ,Si vous donnez une liste et la cartographiez dans un dictionnaire,C'est - à - dire, Nous voulons convertir notre liste en dictionnaire avec des touches numériques
mylist = ['blue', 'orange', 'green']
#Map the list into a dict using the map, zip and dict functions
mapped_dict = dict(zip(itr, map(fn, itr)))
Le type de données actuellement traitées est un dictionnaire
Supposons que nous ayons deux dictionnaires ou plus,Et nous voulons tous les fusionner en un dictionnaire avec une clé unique
from collections import defaultdict
#merge two or more dicts using the collections module
def merge_dicts(*dicts):
mdict = defaultdict(list)
for dict in dicts:
for key in dict:
res[key].append(d[key])
return dict(mdict)
Une tâche très courante du dictionnaire est si nous avons un dictionnaire et que nous voulons inverser ses clés et ses valeurs ,La clé deviendra une valeur,Et la valeur devient la clé
Quand on fait ça, Nous devons nous assurer qu'il n'y a pas de clés dupliquées .Les valeurs peuvent être répétées,Mais la clé ne peut pas, Et assurez - vous que toutes les nouvelles clés sont OK hashable De
my_dict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
#Invert the dictionary based on its content
#1- If we know all values are unique.
my_inverted_dict = dict(map(reversed, my_dict.items()))
#2- If non-unique values exist
from collections import defaultdict
my_inverted_dict = defaultdict(list)
{my_inverted_dict[v].append(k) for k, v in my_dict.items()}
#3- If any of the values are not hashable
my_dict = {value: key for key in my_inverted_dict for value in my_inverted_dict[key]}
Ensuite, le traitement des chaînes
Formater une chaîne peut être une tâche que nous devons accomplir presque tous les jours ,In Python Il y a plusieurs façons de formater une chaîne,Utiliser f Les chaînes sont un meilleur choix
#Formatting strings with f string.
str_val = 'books'
num_val = 15
print(f'{num_val} {str_val}') # 15 books
print(f'{num_val % 2 = }') # 1
print(f'{str_val!r}') # books
#Dealing with floats
price_val = 5.18362
print(f'{price_val:.2f}') # 5.18
#Formatting dates
from datetime import datetime;
date_val = datetime.utcnow()
print(f'{date_val=:%Y-%m-%d}') # date_val=2021-09-24
Une tâche très courante est de vérifier si la chaîne est dans la liste des chaînes
addresses = ["123 Elm Street", "531 Oak Street", "678 Maple Street"]
street = "Elm Street"
#The top 2 methods to check if street in any of the items in the addresses list
#1- Using the find method
for address in addresses:
if address.find(street) >= 0:
print(address)
#2- Using the "in" keyword
for address in addresses:
if street in address:
print(address)
Parfois,Surtout lors de la construction d'applications essentielles à la mémoire,Nous devons savoir combien de mémoire notre chaîne utilise
str1 = "hello"
str2 = ""
def str_size(s):
return len(s.encode('utf-8'))
str_size(str1)
str_size(str2)
Enfin, regardons le fragment de code d'entrée / sortie
№12:Vérifier si le fichier existe
Dans la science des données et de nombreuses autres applications,Nous avons souvent besoin de lire ou d'écrire des données à partir d'un fichier,Mais pour ce faire,,Nous devons vérifier si le fichier existe,Donc,, Nous devons nous assurer que le Code ne IO Terminé par erreur
#Checking if a file exists in two ways
#1- Using the OS module
import os
exists = os.path.isfile('/path/to/file')
#2- Use the pathlib module for a better performance
from pathlib import Path
config = Path('/path/to/file')
if config.is_file():
pass
Une autre interaction de fichiers très courante est l'analyse des données à partir d'un tableur,Nous utilisons CSV Module pour nous aider à accomplir cette tâche efficacement
import csv
csv_mapping_list = []
with open("/path/to/data.csv") as my_data:
csv_reader = csv.reader(my_data, delimiter=",")
line_count = 0
for line in csv_reader:
if line_count == 0:
header = line
else:
row_dict = {key: value for key, value in zip(header, line)}
csv_mapping_list.append(row_dict)
line_count += 1
C'est bon,On a étudié ensemble. 13 Fragments de code, Ces fragments sont simples 、 Bref et efficace , Quel que soit le domaine d'application dans lequel nous travaillons , Et ils finiront par être Python Utiliser au moins un des éléments du projet , La collection est donc le meilleur choix. !
Rétrospective
NLP Pratique de la modélisation des problèmes de classe
Python Algorithme de chiffrement commun dans crawler !
2DChangez - vous.3D, Venez voir invista AI“Nouveau”La magie.!
C'est bon.Python Plusieurs structures de données communes !
Partager
Collection de points
Un peu.
Regarde.