Un programmeur Java a étudié Python. (À propos du type)

Je suis un programmeur Java qui a commencé à étudier Python avec élan car je suis à court de messages en Java. Cliquez ici pour consulter l'article précédent sur les déclarations if, for, while.

Je l'ai posté la dernière fois avec une idée, mais le plus grand nombre de j'aime jamais! J'ai reçu. (Moon et Suppon par rapport à la tendance ...) J'ai réalisé que Python était toujours à la mode.

Comme c'est gentil! La tension monte en recevant Le début était comme une poubelle, mais étudions sérieusement Python! Alors écrivez un livre de référence Python! Je pense ces jours-ci.

Mais, "Est-ce pour les débutants, est-ce bon pour l'analyse de données, ou est-ce bon pour le développement Web, l'analyse d'image est difficile à jeter ..." Je suis inquiet, donc pour l'instant, je vais étudier les bases des bases tout en faisant référence à divers sites d'introduction.

Site de référence

Environnement de vérification de fonctionnement

Moule

Si vous avez bien étudié PHP, vous n'aurez pas de mal, mais dans le cerveau Java à l'ancienne, il n'y a pas de déclaration de type. «Je ne connais pas le type en un coup d'œil… Ugh…» Alors cette fois, j'ai étudié les moisissures. (Pourquoi

En Python, il semble qu'il y ait environ 6 types (types?).

  1. Valeur numérique
  2. Chaîne
  3. Liste
  4. Réglez
  5. Taple
  6. Dictionnaire

Il y a deux choses que je ne connais pas. Que sont les tapples et les dictionnaires? Je n'ai même pas entendu parler de taples ... Le dictionnaire est un dictionnaire lorsqu'il est traduit littéralement, mais qu'est-ce qu'un type de dictionnaire ...

Pour le moment, j'étudierai en comparant avec Java dans l'ordre du haut.

Valeur numérique

Il existe trois types numériques en Python:

  1. Entier (entier)
  2. entier long
  3. Flotter

Je les ai tous vus en Java, donc je suis soulagé.

int Avec Java

IntDemo.java


int num1 = 1234; //Nombre décimal
int num2 = 0b10011010010; //Nombre binaire
int num3 = 02322; //8 base
int num4 = 0x4D2; //Hexadécimal

En Python

IntDemo.py


num1 = 1234 #Nombre décimal
num2 = 0b10011010010 #Nombre binaire
num3 = 0o2322 #8 base
num4 = 0x4D2 #Hexadécimal

Si vous essayez de générer à la fois Java et Python dans l'ordre du haut,

1234
1234
1234
1234

Il n'y avait qu'une petite différence dans le nombre octadécimal étant "0" ou "0o". Ça va bien jusqu'ici.

long Le suivant est long. Avec Java

LongDemo.java


long l = 9223372036854775807L;

Écrivez Python de la même manière.

LongDemo.py


l = 9223372036854775807L

Hmm? Y a-t-il une erreur?

SyntaxError: invalid syntax

Pourquoi! N'ajoutez pas simplement L à la fin! Si vous lisez attentivement le site de référence,

Dans Python 3, les entiers (ints) et les entiers longs (longs) ont été fusionnés et traités comme tous les entiers (ints), et L et l ont également été dépréciés.

\(^o^)/ Celui ci-dessus était de savoir comment écrire Python 2. Il semble que Python 3 n'a pas un long. Lisez attentivement le site de référence! !! !! !! (Pardon

Et ce qui est encore important ...

Pour les entiers longs, il n'y a pas de limite au nombre de chiffres tant que la mémoire le permet, et il n'y a pas d'erreur de calcul dans les opérations entre entiers longs.

Donc, il semble que n'importe quel nombre de chiffres est OK tant que la mémoire le permet.

LongDemo2.py


num = 1234567890123456789012345678901234567890123456789012345678901234567890
print(num)

A été sortie correctement.

Vous n'avez pas à être effrayé par les chiffres ... Python est génial ...

float

En Java, double a plus de chiffres valides, donc nous n'utilisons pas float. Cela ressemblera à celui ci-dessous.

FloatDemo.java


float f = 1.2345f;

Avec Python,

FloatDemo.py


f = 1.2345

Essayez de sortir.

1.2345

C'était normal. Le nombre maximum de chiffres dépend du système. Il ne semble y avoir aucun problème avec la reconnaissance que Java double = Python float.

Chaîne

Vient ensuite une chaîne de caractères.

StrDemo.java


String str1 = "Chaîne";
//Comme ci-dessus
String str2 = new String("Chaîne");

Dans le cas de Python également, les détails du mouvement n'ont pas été étudiés, mais il est écrit comme suit.

StrDemo.py


str1 = "Chaîne"
str2 = 'Chaîne'

Il semble que le caractère de clôture peut être une citation simple ou une citation double. En regardant Qiita et GitHub, j'ai eu l'impression que beaucoup de gens utilisent des citations simples. (Le cerveau Java veut juste utiliser des guillemets doubles ...)

En passant, vous pouvez concaténer des chaînes en utilisant le signe plus.

StrDemo2.py


str3 = "Chaîne" + "Mise en relation!"

liste

Comme vous pouvez l'imaginer d'après le nom, est-ce comme un tableau dans d'autres langages de programmation? À partir de l'attente, essayez d'abord d'écrire un tableau en Java.

ListDemo.java


int foo[] = [1, 2, 3, 4, 5];

Si c'est Python

ListDemo.py


foo = [1, 2, 3, 4, 5]

Bien sûr, il existe des fonctions telles que l'ajout, l'insertion, la modification et la suppression d'éléments. Je vais omettre le mouvement, mais j'ai essayé de le résumer.

une fonction Comment utiliser
ajouter à foo.append(6) #Ajouter 6 à la fin
Insérer foo.insert(5, 6) #Insérez 6 après le 5 dans la liste
Changement foo[5] = 6 #Remplacez le 5e de la liste par 6

Il y avait quatre types de suppressions pour autant que je sache.

Supprimer la fonction Comment utiliser
Supprimer tous les éléments foo.clear()
Supprimer l'élément à la position spécifiée foo.pop(1)
Supprimer le même élément que la valeur spécifiée foo.remove("A")
Supprimer en spécifiant la position et la plage del foo[:3] #Supprimer les 3 éléments précédents

~~ J'ai sauté l'enquête parce que c'était ennuyeux, mais ~~ del semble avoir la syntaxe ** "instruction del" ** au lieu de la méthode. Rappelez-vous simplement la "syntaxe de suppression des variables et des objets" et continuez.

dictionnaire

Traduit littéralement, c'est un dictionnaire, mais qu'est-ce qu'un type de dictionnaire ... Sur la page correspondante du site de référence tohoho, il est écrit comme suit.

{...} contient une liste de paires clé / valeur appelée dict.

Est-ce quelque chose comme Map en Java? ?? Pour l'exemple de code Python, j'ai emprunté le site de référence tohoho tel quel.

DictDemo.py


d = {'Yamada': 30, 'Suzuki': 40, 'Tanaka': 80}

L'ordre est inversé, mais si vous changez cela en Java

MapDemo.java


Map<String, Integer> d = new HashMap<String, Integer>();
d.put("Yamada", 30);
d.put("Suzuki", 40);
d.put("Tanaka", 80);

Java ne peut en aucun cas définir une valeur sans utiliser la méthode put (). Python est beaucoup plus simple à écrire que Java. ~~ Java vraiment incompétent ~~ N'oubliez pas le type de dictionnaire Python = Java Map. En outre, il semble qu'il y ait plus de gens qui l'appellent le type de dictionnaire plutôt que le dictionnaire.

Taple

Je n'en ai même plus entendu parler. Tout d'abord, recherchez Google avec "Taple"! Il y avait une page "Tupple" dans Wikipedia.

Tuple ou tuple (anglais: tuple) est un concept général qui fait référence collectivement à un ensemble composé de plusieurs composants. Habituellement utilisé en mathématiques, en informatique, etc. pour représenter une séquence ordonnée d'objets. Individuellement, un ensemble de n morceaux est écrit comme "n-uplet" en anglais, et lorsqu'il est traduit en japonais, il est généralement écrit comme "n ensembles". Le concept de tapple lui-même est parfois appelé un ensemble. En plus de signifier un taple mathématique, n-tuple est également utilisé pour exprimer plusieurs mots comme une extension de double, triple, etc.

_〆 (-∧- ;) Hmm ... Wakaranai ... Si vous êtes un idiot qui ne sait même pas faire d'arithmétique, vous avez l'impression qu'on vous dit: "N'étudiez pas Python!" (Je vais étudier

Je suis désolé. C'est le sujet principal.

Cette fois, j'ai extrait de Python Web.

Le type tapple est l'un des types de séquence ainsi que la chaîne de caractères et les types de liste. Il est composé de plusieurs éléments et les éléments sont disposés dans l'ordre. En particulier, il y a beaucoup de choses en commun avec le type de liste, mais avec tapple, vous ne pouvez pas changer les éléments d'un objet une fois créé. De plus, le taple n'a pas de méthode

Exprimé en Java, est-ce une version tableau (liste) des variables finales? ??

Quand je l'écris, ça ressemble à celui ci-dessous.

TapleDemo.py


tuple = (2005, 2006, 2007, 2008)

Apparemment, il ne peut pas être modifié, il semble donc fonctionner un peu plus vite que la liste. Utilisez tapple si vous ne prévoyez pas de modifier la valeur. À part ça, c'est comme utiliser une liste.

Au fait, si vous voulez définir un taple qui n'a qu'une seule valeur,

TapleDemo2.py


tuple = (2005, )

Il semble qu'il soit nécessaire d'écrire une virgule à la fin.

prime

J'ai écrit que je faisais des recherches sur Python et j'ai pensé "Hey ~ _〆 (・ ∀ ・ *)". J'avais des problèmes avec le titre, donc pour le moment, "bonus".

Constantes en Python

Python n'a pas le concept de constantes. Par conséquent, il semble habituel d'utiliser un nom de variable composé de lettres majuscules et de traits de soulignement comme constante. Je l'ai écrit en PEP8. (Traduction Google vraiment excellente

value = 1 #Variable variable
VALUE = 1 #Traiter comme une constante
VALUE_MAX = 10 #Traiter comme une constante

Type de chaîne

Pour la série Python 3, la chaîne de caractères est unicode. Au fait, il semble qu'il existe deux types de 2 séries, unicode et str.

Les noms de variable commençant par un nombre ne peuvent pas être utilisés

Comme le dit le titre. 123 n'est pas bon, hensu123 est OK.

Ce que tu m'as dit dans les commentaires

S'il y a une virgule, ce sera un taple sans parenthèses

value = 1, 2, 3
print(value)
print(1, 2, 3)
print((1, 2, 3))

Le résultat de l'exécution est

(1, 2, 3)
1 2 3
(1, 2, 3)

C'est devenu un taple. Le cerveau Java est trop rafraîchissant et inconfortable, mais c'est bien parce que vous pouvez réduire le nombre de caractères d'entrée.

Taple peut être utilisé comme clé de dictionnaire

Le taple étant un objet immuable, il peut également être utilisé comme clé de dictionnaire. De plus, comme il n'est pas nécessaire d'avoir des parenthèses, il semble que cela puisse être utilisé comme spécifier des coordonnées XY.

>>> a = {}
>>> a[(1, 2)] = 'abc'
>>> a
{(1, 2): 'abc'}
>>> a[1, 2]
'abc'

Ce domaine est-il utile pour les statistiques telles que l'apprentissage automatique? Je ne sais pas si j'ai oublié les mathématiques ...

Python a tous les objets de valeurs

En Python, toutes les valeurs sont des objets. Cela signifie qu'il existe des types primitifs et des types de référence en Java, mais Python semble être comme des types de référence en Java. Ainsi, Python a une méthode même s'il s'agit d'une valeur numérique. Incroyable (petite sensation moyenne) Ce qui suit est un extrait des commentaires.

>>> dir(-5)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
>>> (-5).__abs__()
5

Comme vous pouvez le voir, dir semble obtenir une liste de méthodes. abs semble être une méthode pour obtenir la valeur absolue.

Impressions d'essayer

Comment utiliser les listes, les dictionnaires (type dictionnaire) et les taples semble déroutant. J'ai pensé, alors j'en ai fait une table.

Supprimer la fonction Comment utiliser
liste []Entourez de
dictionnaire(Sorte de dictionnaire) {}Entourez de
Taple ()Entouré de * Même si vous ne l'entourez pas, c'est OK s'il y a une virgule

J'ai fait une erreur, mais il semble que la syntaxe et les bibliothèques disponibles soient assez différentes entre Python 2 et 3. Si vous commencez à étudier maintenant, assurez-vous de vérifier les références et les versions du site de référence.

Recommended Posts

Un programmeur Java a étudié Python. (À propos du type)
Un programmeur Java a étudié Python. (À propos des décorateurs)
Un programmeur Java a étudié Python. (for, if, while instruction)
Mémorandum sur la corrélation [Python]
Un mémorandum sur le simulacre de Python
Une note sur [python] __debug__
Python: une note sur les classes 1 "Résumé"
Une note sur mock (bibliothèque fictive Python)
Un peu plus sur les références ~ Prenant Python et Java comme exemples ~
Une histoire sur le développement d'un type logiciel avec Firestore + Python + OpenAPI + Typescript
[python] [meta] Le type de python est-il un type?
Une histoire sur Python pop and append
À propos du 02 février 2020 * Ceci est un article Python.
À propos des tranches Python
À propos de la notation d'inclusion de python
À propos du type de référence
Type numérique Python
À propos de Python tqdm.
À propos du rendement Python
À propos de python, classe
python Remarque: Traitez les listes collectivement comme un ensemble
J'ai écrit une classe en Python3 et Java
Pourquoi je suis une boutique Java et démarre Python
Un mémo que j'ai écrit un tri de fusion en Python
À propos de l'héritage Python
Écrire une note sur la version python de python virtualenv
À propos de python, range ()
Analyse de données en Python: une note sur line_profiler
Une histoire sur l'exécution de Python sur PHP sur Heroku
Pensez à créer un environnement Python 3 dans un environnement Mac
À propos de Python Decorator
Un mémorandum sur la bibliothèque de wrapper Python tesseract
Type de chaîne Python2
Python # type de chaîne
À propos de la référence Python
À propos des décorateurs Python
Une histoire sur la modification de Python et l'ajout de fonctions
[Python] À propos du multi-processus
Écrire sur la création d'un environnement Python pour l'écriture de Qiita Qiita
Comment écrire un type liste / dictionnaire de Python3
Points Python du point de vue d'un programmeur en langage C
L'histoire de la création d'une partition de type Hanon avec Python
Une histoire d'essayer un monorepo (Golang +) Python avec Bazel
Un mémo sur la création d'une application Django (Python) avec Docker
Un mémorandum sur la mise en œuvre des recommandations en Python
À propos de Python for loop
Algorithme A * (édition Python)
À propos des arguments de fonction (python)
Réflexion sur les génériques Java
[Python] Prenez une capture d'écran
Créer un module Python
expression lambda de python ...
[Python] Mémo sur les fonctions
Résumé sur Python3 + OpenCV3
Un mémorandum sur Nan.
À propos de Python, pour ~ (plage)
Démoniser un processus Python