Comment passer en douceur du langage C à python sans apprendre le C++ [explication détaillée des bases de python]

insérez la description de l'image ici
Bonjour à tous, je suis Ji Ning.
L'article partira du langage C, présentera en profondeur les connaissances de base de python et comprendra également des explications détaillées sur de nombreux nouveaux points de connaissance de python.


Cartographie mentale :
insérez la description de l'image ici

1. Entrée et sortie Python, redécouverte de hello world et retour aux années passionnées

En langage C, lors de l'entrée et de la sortie, il est généralement nécessaire de suivre un certain format. Par exemple, le nom de la variable doit correspondre strictement au type de la variable, et chaque variable de sortie et d'entrée doit avoir un un-à- une correspondance en quantité et en format. python devient plus concis et pratique

1.1 Règles pour la fonction de sortie print

Par rapport au langage C, la fonction d'entrée en python printest un f de moins, mais la fonction est beaucoup plus pratique. Si vous voulez sortir quelque chose (sortie variable ou directe), branchez-le simplement dans la fonction d'impression, quel que soit le format ou le type de données. Mais sa sortie multi-groupes a toujours certaines règles, sinon il est difficile pour les utilisateurs de bien saisir le format de sortie.
Voici quelques règles où la sortie de la fonction d'impression diffère de C :

  • existerDans la sortie de la même fonction d'impression, chaque donnée est généralement séparée par un espace par défaut(En C, il n'est pas séparé par défaut), mais pour vous débarrasser de cette règle, vous pouvez ajouter des paramètres à l'intérieur de la fonction print sep. L'attribution d'une valeur au paramètre sep peut séparer chaque donnée imprimée par une fonction d'impression de quelque manière que ce soit, comme des caractères vides, des virgules, etc.
  • tandis que dansDans la sortie de plusieurs fonctions d'impression, les données seront généralement automatiquement enveloppées par défautend, si vous souhaitez vous débarrasser de cette règle, vous pouvez ajouter un paramètre à l'intérieur de la fonction d'impression et attribuer une valeur au paramètre de fin. La valeur de sortie de chaque impression peut être séparée par la valeur attribuée à la fin.
    insérez la description de l'image ici

Pourquoi est-ce possible ? En fait, à l'intérieur de la fonction d'impression de python, il y a des paramètres de fin et des paramètres sep, mais dans le cas où ces deux paramètres ne sont pas utilisés, le système mettra par défaut la valeur du paramètre de fin à '\n', et la valeur de la sep à ' ' (espace), donc la situation ci-dessus se produit.

1.2 Règles pour l'entrée de la fonction d'entrée

La fonction d'entrée en python est input , par rapport au langage C, la fonction d'entrée est également plus pratique. La fonction d'entrée peut lire directement les données saisies à partir du terminal (clavier) et les stocker dans une variable, ou après avoir donné une invite, saisir la réponse souhaitée via le clavier et la stocker dans une variable.
insérez la description de l'image ici
Le code ci-dessus signifie saisir une valeur à partir de la console, puis affecter cette valeur à une variable. S'il n'y a pas d'invite de texte dans les crochets d'entrée, l'effet est le même, mais s'il y a un problème, l'invite est plus utilisateur -amical.
Il y a un problème qui doit être noté, car la fonction d'entrée ne spécifie pas le type de données lors de la saisie, donc les données d'entrée sont renvoyées sous la forme d'une chaîne par défaut et affectées à la variable. si tu veuxcalculer, les données d'entrée doivent être traitées à tempsconversion de type, sinon une erreur sera signalée.
insérez la description de l'image ici
Le type de données nécessaire au calcul est converti en ce type de données.

1.3 Écrire des données dans un fichier avec print

Comme C, si vous souhaitez opérer sur un fichier en python, vous devez également d'abord ouvrir le fichier et fermer le fichier après l'opération. La fonction pour ouvrir un fichier en python est openfunction, et la fonction pour fermer un fichier est close.
insérez la description de l'image ici
Le premier paramètre de la fonction open est le chemin du fichier à écrire, et le deuxième paramètre est le mode de lecture et d'écriture du fichier.
Le premier paramètre de la fonction d'impression est le contenu des données à écrire et le second paramètre est l'objet fichier à écrire.
Le tableau suivant présente certains modes courants de fonctionnement des fichiers.
insérez la description de l'image ici
Comme illustré dans la figure ci-dessous, ouvrez le fichier text.txt sur le disque D et vous pouvez voir le texte hello world.
insérez la description de l'image ici

2. Types de données, opérateurs de base et annotations

2.1 Types de données

Les types de données en python sont divisés en 4 catégories, 整型,浮点型,布尔型,字符串.
insérez la description de l'image ici
Il n'est pas nécessaire d'en dire plus sur les types entiers et à virgule flottante, qui sont exactement les mêmes que C. Le type booléen de python est le jugement de vrai et faux, True est vrai, False est faux, et leur valeur par défaut est 1, et la valeur par défaut de False est 0.
Sauf que la valeur booléenne dans l'image suivante est False, les autres sont True.
insérez la description de l'image ici
Le type de chaîne est un type immuable et peut être défini avec des guillemets simples, des guillemets doubles et des guillemets multiples. Les chaînes définies par des guillemets simples et des guillemets doubles doivent être activées La chaîne définie par des guillemets triples peut être sur une ou plusieurs lignes, comme illustré dans la figure ci-dessous.
insérez la description de l'image ici
Différents types de données doivent être convertis dans le même type s'ils doivent être utilisés ensemble. Les nombres à virgule flottante et les entiers convertiront automatiquement les résultats en données à virgule flottante. D'autres types peuvent utiliser la fonction de conversion de type pour convertir les données selon le principe de conversion.

2.2 Opérateurs de base

2.21 Opérateurs arithmétiques

Parmi les opérateurs arithmétiques, l'addition, la soustraction, la multiplication et le module les plus élémentaires sont les mêmes que C. La différence est qu'en pythonclassement des divisions, et rejoint leopérateur d'exponentiation.
Python classe la division comme une division entière (//) et division ordinaire (/), et la division entière est arrondie, comme vous devez le savoir, c'est la même chose que C, et la division ordinaire peut effectuer des opérations normales, et la division de deux entiers peut également obtenir des nombres à virgule flottante.
L'opérateur d'exponentiation (**) L'opérande précédent est le nombre de base de l'opération d'exponentiation et l'opérande suivant est le nombre d'opérations d'exponentiation.

2.22 Opérateurs logiques

insérez la description de l'image ici
Le et logique et, le ou logique ou et le non logique ne correspondent pas respectivement à &&, || et ! en langage C. opérateur.
Et in est utilisé pour juger si un élément est dans un conteneur, en particulier, il peut être utilisé pour juger si un élément est dans une liste, une chaîne, un tuple, une collection, un dictionnaire, pas dans c'est tout le contraire, c'est pour juger si un élément n'est pas dans un milieu de conteneur.

2.23 Opérateurs au niveau du bit et priorité des opérateurs

Les opérateurs au niveau du bit de Python sont les mêmes que ceux de C, y compris & bitwise AND, | bitwise OR, ^ bitwise XOR, ~ bitwise inversion, << left shift, >> right shift. La méthode spécifique est la même qu'en C, donc je n'entrerai pas dans les détails ici.
操作符的优先级
Effectuez les opérations strictement selon la priorité ci-dessous. N'oubliez pas d'ajouter des parenthèses si vous n'êtes pas sûr ou si vous voulez calculer les opérations avec une priorité inférieure en premier.
insérez la description de l'image ici

2.3 Remarques

La méthode d'annotation de python a également été modifiée et la méthode d'annotation est remplacée parAjouter un signe # avant la déclaration
Dans PyCharm, la façon générale de commenter les déclarations de plusieurs paragraphes estCtrl+ /

3. Stockage des données

Comment stocker des données en python

Le diagramme logique de python stockant des données
insérez la description de l'image ici
Chaque donnée a son propre identifiant, et la variable ne stocke que l'identifiant des données. Le compilateur trouve les données via cet identifiant, puis effectue une série d'opérations. L'identifiant ici est similaire Adresses en C , et ces méthodes d'accès sont similaires aux pointeurs.
Vous pouvez utiliser is pour comparer les identifiants de deux variables
insérez la description de l'image ici
et renvoyer True lorsqu'elles sont égales, indiquant que les variables a et b accèdent au même espace mémoire et sont complètement égales.
En C, les données seront stockées dans plusieurs zones, telles que la zone de tas, la zone de pile, etc. La figure suivante montre la zone de stockage de données en C. Python dispose également d'un grand nombre de zones permettant aux utilisateurs de stocker des données
insérez la description de l'image ici
.

栈区: stocke les types de données de base et leurs objets (tels que int, float, bool, etc.), ainsi que les paramètres, les valeurs de retour et les variables locales lors de l'appel de fonctions. La mémoire de la pile est automatiquement allouée et libérée, avec une vitesse d'accès rapide.
堆区: stocker des objets complexes (tels que des listes, des tuples, des dictionnaires, etc.) et leurs objets. L'allocation et la libération de la mémoire de tas sont automatiquement effectuées par l'interpréteur Python, et la mémoire peut être automatiquement libérée via le mécanisme de récupération de place dans Python.
数据区: stocker des données telles que des variables globales et des variables statiques, et des constantes.
代码区: stocke le bytecode de Python, c'est-à-dire le code intermédiaire avant la conversion en code machine.

En C, la mémoire dynamique doit être allouée et libérée manuellement, tandis qu'en Python,la gestion de la mémoire est automatique, l'interpréteur Python alloue et libère automatiquement de la mémoire selon les besoins.

4. Branches et boucles

Les branches et les boucles sont similaires au langage C ici, avec des similitudes dans la logique et des différences mineures dans les règles grammaticales.

4.1 Instruction de branche if-else

La syntaxe python est la suivante. Par rapport à C, seuls les crochets sont supprimés. S'il y a plusieurs instructions dans le if, vous pouvez utiliser les mêmes 缩进accolades pour remplacer les accolades en C.

if condition:
    # code to be executed if condition is True
else:
    # code to be executed if condition is False

Parmi eux, la condition est une expression, si le résultat est Vrai, le bloc de code 1 sera exécuté, sinon le bloc de code 2 sera exécuté.
Voici un exemple:

a = 10
if a > 0:
    print("a is positive")
else:
    print("a is not positive")

Python change le else if en elifune instruction, qui est utilisée pour ajouter plusieurs branches conditionnelles.
条件表达式
L'expression conditionnelle en python est similaire à l'opérateur ternaire en langage C.
Par exemple, le code suivant utilise une expression conditionnelle pour vérifier si la variable x est supérieure à 5. Si c'est le cas, la valeur de la variable y est définie sur 10 , sinon il est mis à 0 :

x = 7
y = 10 if x > 5 else 0
print(y)  # 输出 10

Dans cet exemple, la condition de l'expression conditionnelle est "x > 5", et si elle est vraie, la valeur de retour est 10 (c'est-à-dire "y = 10"), sinon elle renvoie la valeur 0 (c'est-à-dire "y = 0"). Mais ce type d'expression conditionnelle ne convient que pour des situations de branchement relativement simples, et une logique conditionnelle plus complexe doit être remplacée par une instruction if.

4.2 Boucle

whileLa boucle est fondamentalement la même que C, elle parcourt une certaine structure jusqu'à ce qu'une certaine condition soit remplie.

while 条件:
    循环体

exemple de code

i = 0
while i < 5:
    print(i)
    i += 1

La boucle for-in en Python est utilisée pourparcourirChaque élément d'une séquence ou d'une collection.

for 变量名 in 序列:
    循环体语句

Parmi eux, le nom de la variable est une variable de boucle, qui est utilisée pour faire référence à chaque élément de la boucle. La séquence peut être des objets itérables tels que des listes, des tuples, des chaînes, des ensembles ou des dictionnaires. L'instruction du corps de la boucle est un bloc d'instructions qui doit être exécuté à plusieurs reprises. Exemple de code
 :

names = ['Alice', 'Bob', 'Charlie', 'David']
for name in names:
    print(name)

# 输出结果:
# Alice
# Bob
# Charlie
# David

Les instructions conditionnelles peuvent être combinées dans le corps de la boucle pour obtenir un flux de contrôle plus flexible.

4.3 déclaration de réussite

passest une instruction vide qui ne fait rien. mais il peut être utilisé commeEspace réservé, qui signifie "ne rien faire ici", peut souvent nous aider à construire une structure syntaxique, car Python nécessite au moins une instruction dans le bloc de code. Par exemple, lorsque vous souhaitez d'abord écrire le squelette d'un code mais que vous n'avez pas encore compris l'implémentation, vous pouvez utiliser l'espace réservé de l'instruction pass dans le bloc de code.

def my_function():
    pass

Dans le code ci-dessus, il n'y a pas d'opération dans la fonction my_function, mais elle est toujours définie correctement en raison de l'utilisation de l'instruction pass. S'il n'y a pas d'instruction pass, le code signalera une erreur.

5. structure de données de base en python

Les structures de données de base de Python sont les chaînes, les tuples, les listes, les dictionnaires et les ensembles.
insérez la description de l'image ici
Les tuples et les chaînes sont des séquences immuables et les opérations telles que l'ajout, la suppression, la vérification et la modification ne peuvent pas être effectuées par elles-mêmes.
Les nombres ordonnés ont des indices
1. Règles d'indice et d'indice
Les indices peuvent commencer par l'avant ou par l'arrière.
La règle de commencer par l'avant est de 0, en augmentant de 1.
La règle de commencer par l'arrière est de -1, puis décroissant 1
insérez la description de l'image ici

5.1 Listes - Tableaux en Python

En Python, le type de données correspondant à un tableau en langage C est une liste (list). Les listes peuvent être utilisées pour stocker plusieurs éléments, et le nombre d'éléments peut être augmenté ou diminué dynamiquement. Comme un tableau, les éléments d'une liste sont accessibles par index, ou une boucle peut être utilisée pour itérer sur tous les éléments. Cependant, l'utilisation de listes en Python est plus pratique et flexible que les tableaux.
列表的创建
Utilisez une paire de crochets [] pour indiquer une liste vide, ou ajoutez une liste de valeurs séparées par des virgules entre crochets pour créer une liste avec des éléments ; vous pouvez également utiliser la fonction list() pour créer un liste : mettre plusieurs dans la fonction de liste Une valeur, si c'est une chaîne, traitera chaque caractère qu'elle contient comme un élément séparé.

5.1.1 Ajout, suppression et modification de la liste

列表中查询元素
Il existe deux manières d'interroger les éléments d'une liste : la première consiste ànom_liste[index], l'indice commence à 0, l'index du premier élément est 0 , et l'index du dernier élément est le nombre total d'éléments de la liste sz-1 ; vous pouvez aussi indexer 'inversé' : l'index du dernier élément est - 1 , et l'indice du premier élément L'indice de est sz , et bien sûr les indices de ces deux indices sont de petit à grand.
La seconde estindex (élément de liste), qui peut être utilisé pour trouver la première occurrence d'un élément dans une liste. La syntaxe de base est la suivante :

list.index(x[, start[, end]])

Parmi eux, x est l'élément à rechercher ; début et fin sont des paramètres facultatifs, indiquant la position de début et la position de fin de la recherche, en cas d'omission, la liste entière sera recherchée par défaut.
Si l'élément n'existe pas dans la liste, une exception ValueError sera déclenchée et une instruction try-except peut être utilisée pour éviter les plantages du programme. Par exemple le code suivant :

my_list = [1, 2, 3, 4, 5]
try:
    index = my_list.index(6)
    print(index)
except ValueError:
    print("Element not found in list")

增加元素
Un élément peut être ajouté à la fin de la liste en utilisant la méthode append(). Vous pouvez également utiliser la méthode extend() pour ajouter des éléments d'une autre liste à la fin de la liste actuelle, ou utiliser la méthode insert() pour insérer un élément à une position spécifiée.

my_list = [1, 2, 3]
my_list.append(4)  #将一个元素添加到列表的末尾
print(my_list)  # [1, 2, 3, 4]
my_list = [1, 2, 3]
my_list.extend([4, 5])  #另一个列表的元素添加到当前列表的末尾
print(my_list)  # [1, 2, 3, 4, 5]
my_list = [1, 2, 3]
my_list.insert(1, 4)   #将元素插入到指定的位置
print(my_list)  # [1, 4, 2, 3]

删除元素
Vous pouvez utiliser la méthode remove() pour supprimer l'élément spécifié, vous pouvez également utiliser la fonction pop pour supprimer l'élément à la position spécifiée dans la liste, ou utiliser l'instruction del pour supprimer l'élément à la position spécifiée.

my_list = [1, 2, 3]
my_list.remove(2) #删除列表中的 2 元素
print(my_list)  # [1, 3]
my_list = [1, 2, 3]
my_list.pop(0) # 删除并返回1
print(my_list) # 输出[2,3] 
my_list = [1, 2, 3]
del my_list[1] #删除索引1位置的元素
print(my_list)  # [1, 3] 

修改元素
L'élément à la position spécifiée peut être modifié directement via l'indice.

my_list = [1, 2, 3]
my_list[1] = 4  #将索引1位置处的元素改为4
print(my_list)  # [1, 4, 3]

5.1.2 Effectuer d'autres opérations sur la liste

创建列表的副本

Une copie de la liste estcréé une nouvelle liste, qui contient les mêmes éléments que la liste d'origine, mais qui est en fait un objet différent. Par conséquent, les modifications apportées à la copie n'affecteront pas la liste d'origine. Il existe plusieurs façons de créer une copie

1. Utilisez l'opérateur de tranche [:]. Par exemple, si la liste d'origine est my_list, vous pouvez utiliser my_list[:] pour créer une copie, comme suit :

my_list = [1, 2, 3]
my_list_copy = my_list[:]

2. Utilisez la méthode copy(). Par exemple, si la liste d'origine est my_list, vous pouvez utiliser my_list.copy() pour créer une copie, comme suit :

my_list = [1, 2, 3]
my_list_copy = my_list.copy()

3. Utilisez la fonction list(). Par exemple, si la liste d'origine est my_list, une copie peut être créée en utilisant list(my_list) comme suit :

my_list = [1, 2, 3]
my_list_copy = list(my_list)

对列表进行排序
En langage C, si nous voulons trier les éléments du tableau, nous pouvons utiliser le tri à bulles, le tri qsort et d'autres méthodes, mais dans la liste python, il existe des fonctions spéciales pour trier la liste.
tri décroissant

my_list = [3,1,4,1,5,9,2,6,5,3,5]
my_list.sort(reverse=True)
print(my_list)

Ascendant

my_list = [3,1,4,1,5,9,2,6,5,3,5]
my_list.sort()
print(my_list)

求某元素在列表中出现的次数
La première méthode consiste à parcourir la liste et à mettre en place un compteur. Lorsqu'un élément apparaît, le décompte est incrémenté de 1.

count = lst.count(x)
print(count)

Vous pouvez également utiliser la fonction intégrée count de python pour compter

count = lst.count(x)
print(count)

5.2 Dictionnaires - structures en python

Un dictionnaire Python est unhors serviceUn type de données de collection qui se compose d'une série de paires clé-valeur,Séparez chaque paire clé-valeur par une virgule. Les clés d'un dictionnaire doivent être uniques, tandis que les valeurs peuvent être n'importe quel type de données. Un dictionnaire est une structure de données couramment utilisée dans le langage Python. Il peut être utilisé directement sans définition ni déclaration, et il fournit une organisation flexible des données et des méthodes d'accès : la valeur correspondant à la clé est accessible directement via la clé.
字典的创建方式:
1. Utilisez des accolades {} et séparez les valeurs de clé par deux-points : dict1 = {'key1': 'value1', 'key2': 'value2', ...}, la clé et la valeur sont en correspondance un à un.
2. Utilisez la fonction intégrée dict() pour créer : dict2 = dict(key1='value1', key2='value2', ...)
3. Utilisez la méthode dict.fromkeys() pour créer. Vous pouvez entrer plusieurs clés, mais une seule valeur : dict3 =dict.fromkeys(['key1', 'key2', ...],100)
4. Créez un dictionnaire vide : utilisez directement les accolades {}, à l'intérieur Ne mettez pas de valeur ; utilisez la fonction dict() pour ne pas mettre de valeur.
字典定义示例:

person = {
    
    
    "name": "John",
    "age": 30,
    "city": "New York"
}

Parmi eux, les clés sont respectivement "nom", "âge" et "ville", et les valeurs correspondantes sont respectivement "John", 30 et "New York". La valeur correspondante est accessible par clé. Par exemple:

print(person["name"])  # 输出:John
print(person["age"])   # 输出:30

La mémoire du dictionnaire est automatiquement gérée par l'interpréteur python, et il n'est pas nécessaire de se préoccuper de la question de l'allocation et de la libération de la mémoire pendant l'utilisation.

5.2.1 Opérations couramment utilisées sur les dictionnaires

  • 获取字典中的值: Récupère la valeur dans le dictionnaire par clé, telle que dict[clé].

  • 添加新键值对: En utilisant dict[clé] = valeur, de nouvelles paires clé-valeur peuvent être ajoutées au dictionnaire.

  • 修改键值对: Modifiez la valeur dans le dictionnaire via la clé, telle que dict[clé] = nouvelle_valeur.

  • 删除键值对: Utilisez del dict[clé] pour supprimer les paires clé-valeur dans le dictionnaire.

  • 获取字典的长度: Utilisez len(dict) pour obtenir le nombre de paires clé-valeur dans le dictionnaire.

  • 判断键是否存在: Vous pouvez utiliser le mot-clé in pour déterminer si une clé existe dans le dictionnaire, telle que key in dict.

  • 获取所有键或所有值: Utilisez dict.keys() pour obtenir toutes les clés du dictionnaire et utilisez dict.values() pour obtenir toutes les valeurs du dictionnaire.

  • 获取所有键值对: Utilisez dict.items() pour obtenir toutes les paires clé-valeur du dictionnaire.

  • 清空字典: Utilisez dict.clear() pour effacer tout le dictionnaire.

  • 复制字典: Utilisez dict.copy() pour copier un dictionnaire.

5.2.2 Caractéristiques des dictionnaires

le dictionnaire esthors service: Les entrées du dictionnaire n'ont pas d'ordre fixe, et l'ordre de stockage n'a rien à voir avec l'ordre de définition.
Les dictionnaires sont modifiables : les paires clé-valeur du dictionnaire peuvent être ajoutées, supprimées ou modifiées.
dans le dictionnaireLes clés doivent être de type immuable, tels que des entiers, des flottants, des chaînes ou des tuples, tandis que les valeurs peuvent être de n'importe quel type.
chaqueUne clé ne peut apparaître qu'une seule fois dans le dictionnaire, si la même clé est affectée plusieurs fois, seule la dernière valeur est conservée.
Les dictionnaires sont généralement utilisés pour une recherche et une récupération rapides, et peuvent accéder rapidement aux valeurs en fonction des clés, et la complexité temporelle est O(1).
Le stockage du dictionnaire est "aléatoire", s'appuyant sur la clé pour trouver la valeur, donc beaucoup de mémoire est gaspillée, et c'est une structure de données qui échange de l'espace contre du temps.

5.3 Tuples

Tuple est l'une des structures de données intégrées de Python. C'est une séquence immuable qui peut contenir n'importe quel type de données, comme des nombres, des chaînes, des listes, des dictionnaires, des tuples, etc.
元组的创建
1. Utilisez des parenthèses () pour entourer les éléments et séparez-les par des virgules, par exemple :

(1,"hello",[3,4],5.6,{
    
    "纪宁":"赤明九天图"})

2. Utilisez la fonction intégrée tuple() pour convertir des listes ou d'autres objets itératifs en tuples, tels que t=tuple([1,2,3]) 3. Vous
pouvez omettre les parenthèses et créer des tuples directement lorsqu'ils sont séparés par des virgules. Par exemple : t=1,"hello",[3,4],5.6
4. Il n'y a qu'un seul élément, ajoutez des virgules pour distinguer les tuples et les expressions, par exemple : t=(1,)
5.tuple vide:() ou t = tuple()
insérez la description de l'image ici
为什么要将元组设置为不可变序列?
Les tuples sont conçus comme des séquences immuables car ils peuvent être utilisés pour représenter un ensemble immuable de données, telles que des dates, des heures, des coordonnées, etc. Une fois les tuples créés, leurs valeurs ne peuvent pas être modifiées, ce qui les rend plus efficaces que les séquences mutablesplus sûr, car ils ne peuvent pas être modifiés accidentellement. De plus, les tuples sont également plus efficaces que les listes car leur immuabilité leur permet desont créés, manipulés et libérés plus rapidement

5.4 Collecte

Un ensemble est une structure de données intégrée en python. Comme les listes et les dictionnaires, il s'agit d'une séquence de types de variables, et les éléments de l'ensemble sont non ordonnés et non répétitifs, de sorte que l'ensemble équivaut à un dictionnaire sans valeur.
字典的创建

  • Direct {}, par exemple s = {'python', 'hello' , 90}
  • En utilisant la fonction intégrée set(), les parenthèses peuvent contenir des éléments de différents types de données

La création d'une collection vide nécessite également l'utilisation de la fonction set(). Si la collection vide est initialisée directement avec des accolades, elle sera considérée comme un dictionnaire vide par l'interpréteur.

5.4.1 Opérations couramment utilisées sur les collections

集合元素的新增

  • add() : ajoute un seul élément à la collection
  • update() : ajoute plusieurs éléments à la collection

exemple de méthode add()

# 定义一个空集合
my_set = set()
# 添加元素
my_set.add(1)
my_set.add(2)
my_set.add(3)
print(my_set)  # 输出:{1, 2, 3}

exemple de méthode update()

# 定义一个空集合
my_set = set()
# 添加元素
my_set.update([1, 2, 3])
my_set.update([4, 5, 6])
print(my_set)  # 输出:{1, 2, 3, 4, 5, 6}

集合元素的删除

  • remove() : supprime un élément en fonction de la valeur de l'élément, si l'élément n'existe pas, déclenche KeyError
  • jeter () : supprimer un élément en fonction de la valeur de l'élément, si l'élément n'existe pas, aucune erreur n'est signalée
  • pop() : Supprime aléatoirement un élément de la collection et renvoie l'élément, si la collection est vide, KeyError sera déclenché
  • clear() : supprimer tous les éléments de la collection
s=set(range(1,6))
print(s) #{1,2,3,4,5}
s.pop()  #随机删除一个
print(s) # {2,3,4,5}   
s.discard(3) #删除集合元素 3
print(s)  #{2, 4, 5}
s.clear() #清空
print(s) #输出空集合

判断两个集合的关系

  • issubset()——s2.issubset(s1), pour déterminer si s2 est un sous-ensemble de s1
  • issuperset()——s1.issuperset(s2), pour déterminer si s1 est un sur-ensemble de s2
  • isdisjoint()——s1.isdisjoint(s2), pour déterminer si s1 et s2 ne se coupent pas

求两个集合交并集的方法

  • intersection——s1.intersection(s2), équivalent à s1&s2, trouve l'intersection de s1 et s2
  • union——s1.union(s2), équivalent à s1|s2, trouver l'union de s1 et s2
  • difference——s1.difference(s2), équivalent à s1-s2, trouver la différence entre s1 et s2
  • symmetric_difference——s1.symmetric_difference(s2), équivalent à s1^s2, trouver la différence symétrique entre s1 et s2 (union-intersection)

5.5 Cordes

5.51 Opérations courantes sur les chaînes

字符串查询

  • index(), trouve la chaîne spécifiée dans la chaîne, renvoie l'index lorsqu'il apparaît pour la première fois et signale une erreur s'il ne le trouve pas.
  • find(), trouve la chaîne spécifiée dans la chaîne, renvoie l'index lorsqu'il apparaît pour la première fois, renvoie -1 s'il n'est pas trouvé
  • rindex(), trouve la chaîne spécifiée dans la chaîne, renvoie l'index de la dernière occurrence et signale une erreur si elle est introuvable
  • rfind(), trouve la chaîne spécifiée dans la chaîne, renvoie l'index de la dernière occurrence, renvoie -1 si introuvable

字符串大小写转化

  • upper() - Convertit tous les caractères d'une chaîne en majuscules
  • lower() - convertit tous les caractères de la chaîne en lettres minuscules
  • swapcase() —— Convertir toutes les majuscules en minuscules de la chaîne et convertir les minuscules en majuscules
  • capitalize()——Convertir la première lettre en majuscule et le reste en minuscule
  • title() - convertit la première lettre de chaque mot en majuscule et les caractères restants de chaque mot en minuscule.

字符串对齐
L'alignement du contenu de la chaîne consiste à aligner le contenu d'une chaîne d'une certaine manière pour le rendre plus beau, facile à lire et conforme aux habitudes visuelles. Les opérations courantes d'alignement du contenu des chaînes incluent l'alignement à gauche, l'alignement à droite, l'alignement au centre, etc.
Si la largeur de la chaîne transmise est inférieure à la longueur de la chaîne, renvoie le paquet de chaîne lui-même

  • ljust() - alignement à gauche
txt = txt.ljust(width,fillchar)

Parmi eux, width indique la largeur totale de la chaîne ; fillchar indique le caractère à remplir et la valeur par défaut est un espace. Si la longueur de la chaîne est inférieure à la largeur, elle est remplie à droite avec fillchar jusqu'à ce que la longueur de la largeur soit atteinte.

  • rjust - alignement à droite
string.rjust(width, fillchar)

Parmi eux, width indique la largeur totale de la chaîne ; fillchar indique le caractère à remplir et la valeur par défaut est un espace. Si la longueur de la chaîne est inférieure à la largeur, fillchar est utilisé pour remplir à gauche jusqu'à ce qu'il atteigne la longueur de la largeur

  • zfill - aligner à droite (remplir avec 0)
string.zfill(width)

Alignement à droite, n'accepte qu'un seul paramètre, utilisé pour spécifier la largeur de l'alignement de la chaîne

  • centre - alignement au centre
string.center(width,fillchar)

Parmi eux, width indique la largeur totale de la chaîne ; fillchar indique le caractère à remplir et la valeur par défaut est un espace. Si la longueur de la chaîne est inférieure à la largeur, elle sera remplie uniformément avec fillchar sur les côtés gauche et droit jusqu'à ce que la longueur de la largeur soit atteinte Le fractionnement de chaîne fait référence au fractionnement d'
字符串劈分
une chaîne en plusieurs sous-chaînes selon le délimiteur spécifié.

  • splist(sep=,maxsplit), split depuis la gauche de la chaîne, sep est le caractère split, maxsplit est le nombre maximum de splits
  • rsplit(sep=,maxsplit), split du côté droit de la chaîne, sep est le caractère split, maxsplit est le nombre maximum de splits

Après le nombre maximum de divisions, les sous-chaînes restantes seront considérées comme une partie distincte
判断字符串的方法

  • isidentifier(), pour déterminer si la chaîne est un identifiant légal
  • isspace(), pour déterminer si la chaîne est constituée de tous les caractères vides (retour chariot, saut de ligne, tabulation horizontale, etc.)
  • isalpha(), pour déterminer si la chaîne spécifiée est composée de toutes les lettres (les caractères chinois sont également comptés comme des lettres)
  • isdecimal(), pour déterminer si la chaîne est composée de tous les nombres décimaux
  • isnumeric(), pour déterminer si la chaîne spécifiée est entièrement composée de nombres (caractères numériques en codage Unicode)
  • isalnum(), pour déterminer si la chaîne spécifiée est composée de lettres et de chiffres

La fonction isnumeric peut déterminer si un caractère numérique dans le codage Unicode est un nombre, y compris les chiffres arabes 0-9, les chiffres romains, les chiffres chinois, les chiffres thaïlandais, les chiffres tibétains, etc., mais la fonction isnumeric ne peut pas déterminer les caractères spéciaux tels que les décimales, nombres négatifs et forme numérique de notation scientifique.
字符串替换

  • replace(), le premier paramètre est la sous-chaîne de la chaîne remplacée, le deuxième paramètre est la chaîne remplacée, le troisième paramètre est le nombre maximum de remplacements, la fonction renvoie la chaîne remplacée et la chaîne d'origine reste inchangée, si la sous-chaîne n'est pas trouvé, aucun remplacement n'est effectué.
  • join(), utilisé pour connecter des éléments d'un objet itérable (comme une liste, un tuple, etc.) dans une chaîne avec un certain caractère.
separator = ' '  # 连接符(可以为任意字符)
seq = ['apple', 'banana', 'cherry']   # 可迭代对象,如果只有一个字符串,就默认字符串本身为可迭代对象
result = separator.join(seq)   # 将seq中每个元素用separator连接起来
print(result)  # 输出 'apple banana cherry'

5.52 Comparaison des chaînes de caractères et de l'encodage Unicode des caractères

字符的Unicode编码
Chaque caractère a un encodage Unicode correspondant, similaire au code ASCII du langage C, mais plus complet. Les 128 premiers codes Unicode sont ASCII et les codes Unicode sont configurés pour tous les caractères, ce qui est plus complet.

  • ord(), la fonction ord peut convertir un caractère en son encodage Unicode correspondant.
  • chr(), la fonction chr peut convertir le codage Unicode en caractères correspondants.

字符串的比较
Comparez d'abord le codage Unicode du premier caractère des deux chaînes. S'ils sont égaux, continuez à comparer le caractère suivant et comparez-les tour à tour jusqu'à ce que les deux caractères ne soient plus égaux. Le résultat de la comparaison est le résultat de la comparaison des deux chaînes. .Suivi Les caractères de la chaîne ne seront plus comparés.
L'égalité de chaîne consiste à comparer si les adresses (id) de deux chaînes sont égales ; et l'égalité de chaîne == compare si les valeurs (valeur) de deux chaînes sont égales.

5.53 Formater les chaînes

为什么要格式化字符串?
insérez la description de l'image ici
Comme le montre l'image, il s'agit d'une sorte de "formatage", et seule la partie xxx doit être modifiée, ce qui améliore considérablement l'efficacité du travail.
格式化字符串的方式
insérez la description de l'image ici

Par exemple:insérez la description de l'image ici

5.54 Conversion d'encodage de chaînes de caractères

为什么要进行字符串的编码转化

  1. Données de transmission : dans la transmission et le stockage du réseau, il est nécessaire de convertir le codage de chaîne en un flux d'octets. Par exemple, lors du transfert de données à l'aide de requêtes et de réponses HTTP, les données doivent être converties en UTF-8 ou autre flux d'octets codés.

  2. Prise en charge multilingue : différentes langues utilisent différentes méthodes d'encodage, et la conversion d'encodage peut garantir qu'il n'y aura pas de caractères brouillés lors de la transmission de données entre différentes langues.

  3. Sécurité : certains caractères peuvent être utilisés pour écrire du code malveillant ou injecter des attaques, et la conversion d'encodage peut assurer la sécurité du système.

  4. Opérations de base de données : lors du stockage de données dans une base de données, il peut être nécessaire d'encoder des chaînes pour garantir que la base de données prend en charge le format d'encodage et que les données peuvent être stockées et extraites correctement.

  5. Exigences métier : parfois, les exigences métier doivent convertir une chaîne dans un format de codage spécifié pour répondre aux exigences d'un scénario spécifique. Par exemple, dans certains domaines de l'intelligence artificielle, il est nécessaire de convertir du texte en codes pour faciliter l'analyse et le traitement du texte.

insérez la description de l'image ici

  • Encodage : s.encode(ending='GBK') ou s.encode(ending='UFT-8'), convertit la chaîne s en données binaires
  • Décodage : s.decode(ending='GBK') ou s.decode(ending='UFT-8'), convertir les données binaires en caractères

Les flux d'octets encodés et décomposés doivent être unifiés. Si vous utilisez l'encodage "GBK", vous devez utiliser le décodage "GBK", et si vous utilisez l'encodage "UFT-8", vous devez utiliser le décodage "UFT-8".

5.6 Collections génératives

5.6.1 Génération de dictionnaire

内置函数zip(): utilisé pour prendre un objet itérable comme paramètre, regrouper les éléments correspondants dans l'objet dans un tuple, puis renvoyer une liste composée de ces tuples.
Format de syntaxe de compréhension du dictionnaire :

{
    
    key: value for key, value in iterable}

Parmi eux, key représente la clé du dictionnaire, value représente la valeur du dictionnaire et iterable représente des objets itérables, tels que des listes, des tuples, des dictionnaires, etc. La formule de compréhension traversera chaque élément de l'itérable et créera un nouveau dictionnaire selon les règles spécifiées.
Supposons que nous ayons deux listes, utilisez d'abord la fonction zip pour emballer les éléments correspondants dans des tuples et retourner

items=['Fruits','Book','Others']
prices=[96,78,85]
lst=zip(items,prices)

Utilisez ensuite la génération de dictionnaire pour générer un dictionnaire correspondant à la valeur de la clé

d = {
    
    items:prices for items,prices in lst}

insérez la description de l'image ici

5.6.2 Liste des constructions

内置函数range()La fonction :range est une fonction intégrée qui génère une séquence d'entiers. La fonction range a trois formes :

  • range(stop) génère une séquence d'entiers de 0 à stop-1, avec une taille de pas par défaut de 1.

  • range(start, stop) génère une séquence d'entiers de start à stop-1, avec une taille de pas par défaut de 1.

  • range(start, stop, step) génère une séquence d'entiers du début à l'arrêt-1, avec une taille de pas de pas.

Par exemple, range(5) générera la séquence (0, 1, 2, 3, 4), range(2, 7) générera la séquence (2, 3, 4, 5, 6), range(1, 10 , 2) générera la séquence (1, 3, 5, 7, 9).

La fonction range est généralement utilisée dans une instruction de boucle, telle qu'une boucle for, pour parcourir une séquence ou exécuter un nombre spécifié de boucles.

5.6.3 Productions de décors

La syntaxe de base d'une compréhension de collection est :

{
    
    expression for item in iterable}

expression est généralement une variable ou une expression, item est un élément d'un objet itérable et iterable est un objet itérable, tel qu'une liste, un tuple, un dictionnaire, etc.
Par exemple:

nums = [1, 2, 3, 4, 5]
squares = {
    
    x*x for x in nums}
print(squares)

Les expressions d'ensemble prennent également en charge l'ajout d'expressions conditionnelles, par exemple :

nums = [1, 2, 3, 4, 5]
squares = {
    
    x*x for x in nums if x > 2}
print(squares)

Après avoir ajouté la condition x>2, uniquement lorsque x.2, itère pour générer l'expression définie.

5.7 Tranchage

chaînes, listes, tuples, etc.ordonnéLes opérations de découpage sont prises en charge dans les structures de données, et les tranches peuvent obtenir des sous-séquences de ces structures de données ordonnées. L'opération slice ne modifie pas la séquence d'origine, elle renvoie une nouvelle séquence contenant la plage d'éléments spécifiée.
Syntaxe de découpage :

string=str[start:stop:step]

start est la position de départ de la tranche, stop est la position de fin de la tranche (à l'exclusion de l'élément correspondant à cette position) et pas est la taille de pas de la tranche. Si start est omis, la valeur par défaut est 0 ; si stop est omis, la valeur par défaut est la longueur de la séquence ; si step est omis, la valeur par défaut est 1.

6. Fonction - vieux vin dans une nouvelle bouteille

Comme le langage C, en Python, une fonction est un bloc de code réutilisable utilisé pour effectuer certaines tâches. Les fonctions peuvent prendre ou non des paramètres, et retourner une valeur ou non. Explication détaillée de la fonction en langage C
Syntaxe générale de la définition de la fonction :

def add_numbers(num1, num2):
    """This function adds two numbers."""
    result = num1 + num2
    return result
  • def : mot clé pour définir une fonction ;
  • nom_fonction : nom de la fonction, doit commencer par une lettre ou un trait de soulignement ;
  • paramètres : paramètres de fonction, peuvent être un ou plusieurs, peuvent également être vides ;
  • docstring : chaîne de documentation de la fonction, qui décrit la fonction de la fonction, facultative ;
  • instructions : corps de la fonction, l'instruction de code que la fonction doit exécuter.

Utilisons python pour implémenter une calculatrice simple pour vous aider à mieux comprendre les fonctions

    # 加法
    def add(self, x, y):
        return x + y
    # 减法
    def subtract(self, x, y):
        return x - y
    # 乘法
    def multiply(self, x, y):
        return x * y
    # 除法
    def divide(self, x, y):
        if y == 0:
            return "除数不能为0"
        return x / y
# 获取用户输入
print("请选择运算:")
print("1、加法")
print("2、减法")
print("3、乘法")
print("4、除法")
choice = input("请输入需要进行的运算符号(1/2/3/4): ")
num1 = int(input("请输入第一个数字: "))
num2 = int(input("请输入第二个数字: "))
# 执行计算,传递两个参数 num1和num2
if choice == '1':
    print(num1,"+",num2,"=", add(num1,num2))
elif choice == '2':
    print(num1,"-",num2,"=",subtract(num1,num2))
elif choice == '3':
    print(num1,"*",num2,"=", multiply(num1,num2))
elif choice == '4':
    print(num1,"/",num2,"=",divide(num1,num2))
else:
    print("请输入正确的选项")

Python函数传参的特点如下

  1. Paramètre position : le paramètre passé en fonction de la position définie par le paramètre formel ;
  2. Paramètres de mot-clé : paramètres passés selon le nom de paramètre formel ;
  3. Paramètre par défaut : spécifiez une valeur par défaut pour le paramètre formel lors de la définition de la fonction. Si aucun paramètre réel correspondant n'est passé, la valeur par défaut sera utilisée ;
  4. Paramètres variables : *args, utilisé pour passer n'importe quel nombre de paramètres, passés sous la forme de tuples ;
  5. Paramètres de variable de mot-clé : **kwargs, utilisé pour transmettre un nombre quelconque de paramètres de mot-clé, transmis sous la forme d'un dictionnaire.

位置实参: Identique aux règles de passage des paramètres de fonction du langage C, les paramètres réels et les paramètres formels correspondent un par un. Passez
insérez la description de l'image ici10 au paramètre formel a, 20 au paramètre formel b, et
关键字实参
insérez la description de l'image icipassez le paramètre réel
au mot-clé selon le nom du paramètre formel. La règle de transmission des paramètres du paramètre réel est , recherchez d'abord les mots-clés du paramètre réel dans les paramètres formels, transmettez les paramètres réels trouvés aux paramètres formels correspondants, puis transmettez le reste à son tour.
可变参数
Le paramètre formel est défini comme *args, qui peut accepter n'importe quel nombre de paramètres réels, et le résultat est un tuple.
insérez la description de l'image ici
关键字可变实参
Le paramètre formel est défini comme **args, qui accepte n'importe quel nombre d'arguments de mots-clés, et le résultat est un dictionnaire.
insérez la description de l'image ici
La carte mémoire du paramètre de la fonction passant
par exemple le code suivant

def fun(arg1,arg2):
    print("agr1=",arg1,"agr2=",arg2)
    arg1=100
    arg2.append(10)
    print("agr1=",arg1,"agr2=",arg2)
n1=10
n2=[22,33,44]
print("n1=",n1,"n2=",n2)
fun(n1,n2)
print("n1=",n1,"n2=",n2)

insérez la description de l'image ici
Résultat courant :
insérez la description de l'image ici
il montre que, comme en langage C, le paramètre formel en C est une copie temporaire du paramètre réel, et la modification du paramètre réel n'affecte pas le paramètre réel. Dans un programme python, le paramètre réel est une variable temporairement définie pointant vers le même point que le paramètre réel. Changer le pointage du paramètre formel ne peut pas changer le pointage du paramètre réel, mais il est possible d'ajouter ou de supprimer des données après le première adresse pointée par le paramètre formel L'effet de la modification de la valeur du paramètre réel est que le paramètre réel pointe également vers la première adresse de cette mémoire, mais le pointage du paramètre réel ne peut pas être modifié de manière absolue.

Guess you like

Origin blog.csdn.net/zyb___/article/details/132282710