Maison  >  Article  >  développement back-end  >  Introduction détaillée à python3.x

Introduction détaillée à python3.x

零下一度
零下一度original
2017-06-27 09:22:152349parcourir

Ce livre sur l'apprentissage automatique est écrit dans l'environnement de python2.x, et de nombreuses fonctions de python3.x ont des noms ou des méthodes d'utilisation différents de ceux de 2.x, donc le contenu du livre original doit être corrigé, parlons brièvement enregistrez la partie corrigée pendant le processus d'apprentissage

1. Des parenthèses doivent être ajoutées après la fonction d'impression (la fonction d'impression commence à apparaître dans la liste de programmes 2-4)

2. pour saisir la fonction, en 3.

4.

dans le listing de programmes 3-6

Dans python2.7, recherchez le premier élément correspondant à la clé : firstStr = myTree. keys() [0], cela signalera une erreur lors de l'exécution dans python3.4 : l'objet 'dict_keys' ne prend pas en charge l'indexation. En effet, python3 a modifié dict.keys et a renvoyé l'objet dict_keys, qui prend en charge l'itérable mais ne prend pas en charge l'indexation. . Nous pouvons le changer Si elle est explicitement convertie en liste, cette fonction doit être implémentée dans python3 comme suit :

5 Liste de programmes 3-9

pickle utilise le binaire lors de la persistance des données. La méthode est utilisée pour stocker et lire, donc lors de l'écriture d'un fichier,
firstSides = list(myTree.keys()) 
firstStr = firstSides[0]#找到输入的第一个元素

fw=open(filename,'w')---->fw=open(filename,'wb')

Ouvrez le fichier sous forme binaire pour faciliter l'écriture des cornichons

Lors de la lecture des données du fichier, vous devez également le lire sous forme binaire et apporter les modifications suivantes

fr= open(filename )---->fr=open(filename,'rb')

6.

wordList =textParse(open('ch04/email/ham/%d.txt' % i).read())

Cette phrase signale toujours une erreur d'encodage lors de l'exécution, et le résultat est lu Il y a des caractères tronqués dans le fichier. Après avoir supprimé les caractères tronqués, le problème est résolu

Le code d'erreur est le suivant :

UnicodeDecodeError : le codec 'gbk' ne peut pas décoder l'octet 0xae en position 199 : illégal. séquence multi-octets

trainingSet=range(50);

del(trainingSet[randIndex])

Puisque la plage ne peut pas renvoyer la liste et ne prend pas en charge la suppression opération, le message suivant apparaît pendant l'exécution Erreur :

TypeError : l'objet 'range' ne prend pas en charge la suppression d'élément

Vous pouvez modifier le code comme suit :

trainingSet = list( range(50));

à suivre……

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:
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