Il existe huit types de données Python, à savoir : le type numérique (int et long), le type float, le type complexe (complexe), le type chaîne, le type liste, le type tuple, le type dictionnaire, le type booléen (Vrai et Faux ).
Les types de données Python ont les huit types suivants
Type de numéro
int et long
La raison pour laquelle int et long doivent être assemblés est qu'après python3.x, int et long ne sont plus distingués et int est utilisé uniformément. python2.x est toujours différent. Permettez-moi de prendre Python2.7 comme exemple :
>>> i = 10 >>> type(i) <type 'int'>
>>> i=10000000000 >>> type(i) <type 'long'>
Alors pourquoi 10 est un int et 10000000000 est long. Bien sûr, cela est lié à la valeur maximale de int. La valeur maximale du type int est 231-1. , qui est 2147483647 , vous pouvez également utiliser sys.maxint.
>>> 2**31-1 2147483647L >>> sys.maxint 2147483647
Pourquoi la valeur calculée à l'aide de la méthode ci-dessus est-elle un type long (l'ajout de « L » après le nombre indique un type long), car la valeur de 2**31 est 2147483648, qui est un type long. Soustrayez 1 d'un type long, et le résultat est toujours long, mais en fait la valeur maximale du type int est 2147483647
>>> type(2147483647) <type 'int'> >>> type(2147483648) <type 'long'>
type float
type float et d'autres langages Float est fondamentalement le même. Les nombres à virgule flottante, pour le dire franchement, sont des nombres avec une virgule décimale. La précision est liée à la machine. Par exemple :
>>> i = 10000.1212 >>> type(i) <type 'float'>
complexe : type pluriel, veuillez consulter les documents pertinents pour connaître la signification et l'utilisation spécifiques de .
Type de chaîne
Il existe trois façons de déclarer des chaînes : les guillemets simples, les guillemets doubles et les guillemets triples (dont trois guillemets simples ou trois guillemets doubles). Par exemple :
>>> str1 = 'hello world' >>> str2 = "hello world" >>> str3 = '''hello world''' >>> str4 = """hello world""" >>> print str1 hello world >>> print str2 hello world >>> print str3 hello world >>> print str4 hello world
Les chaînes en Python ont deux types de données : le type str et le type unicode. Le type str utilise le codage ASCII, ce qui signifie qu'il ne peut pas représenter le chinois.
Le type Unicode utilise le codage Unicode et peut représenter n'importe quel caractère, y compris le chinois et d'autres langues.
Et il n'y a pas de type char en Python comme en langage C, même un seul caractère est un type chaîne. Le codage ASCII utilisé par défaut par la chaîne. Si vous souhaitez la déclarer comme type Unicode, vous devez ajouter « u » ou « U » devant la chaîne. Par exemple :
>>> str1 = "hello" >>> print str1 hello >>> str2 = u"中国" >>> print str2 中国
Étant donné que les opérations sur les chaînes se produisent souvent dans les projets et qu'il existe de nombreux problèmes dus à des problèmes d'encodage de chaînes, parlons des problèmes d'encodage de chaînes.
Dans le processus de traitement de python, nous rencontrons souvent trois encodages : ASCII, Unicode et UTF-8. Veuillez consulter cet article pour une introduction détaillée.
Je comprends simplement que le codage ASCII convient aux caractères anglais, Unicode convient aux caractères non anglais (tels que le chinois, le coréen, etc.) et utf-8 est un format de stockage et de transmission pour Uncode. caractères. Réencodage (codé en unités de 8 bits). Par exemple :
u = u'汉' print repr(u) # u'\u6c49' s = u.encode('UTF-8') print repr(s) # '\xe6\xb1\x89' u2 = s.decode('UTF-8') print repr(u2) # u'\u6c49' 解释:声明unicode字符串”汉“,它的unicode编码为”\u6c49“,经过utf-8编码转换后,它的编码变成”\xe6\xb1\x89“。
Résumé de l'expérience de codage :
1 Déclarez le format d'encodage dans l'en-tête du fichier python
#-*- coding: utf-8 -*-
2. chaînes Déclaré comme type Unicode, c'est-à-dire ajouter u ou U avant la chaîne
3. Pour les opérations de lecture et d'écriture de fichiers, il est recommandé d'utiliser codecs.open() au lieu du open( intégré). ). Suivez un principe, lequel utiliser Écrivez dans n'importe quel format, utilisez quel format lire
Supposons qu'il y ait plusieurs mots « caractères chinois » dans un fichier texte enregistré au format ANSI ; suivant directement le code et que vous souhaitez l'afficher sur l'interface graphique ou dans l'IDE. Lors de l'impression dans un IDE (par exemple, en texte sublime ou en pydev), des caractères tronqués ou des exceptions apparaîtront, car les codecs liront le contenu en fonction de l'encodage. format du texte lui-même :
f = codecs.open("d:/test.txt") content = f.read() f.close() print content
Changer Utilisez simplement la méthode suivante (ne fonctionne que pour le chinois) :
# -*- coding: utf-8 -*- import codecs f = codecs.open("d:/test.txt") content = f.read() f.close() if isinstance(content,unicode): print content.encode('utf-8') print "utf-8" else: print content.decode('gbk').encode('utf-8')
Type de liste
Une liste est un type de collection modifiable, et ses éléments peuvent être des types de base tels que des nombres et des chaînes, ou des objets de collection tels que des listes, des tuples et des dictionnaires, ou même des types personnalisés. Il est défini comme suit :
>>> nums = [1,2,3,4] >>> type(nums) <type 'list'> >>> print nums [1, 2, 3, 4] >>> strs = ["hello","world"] >>> print strs ['hello', 'world'] >>> lst = [1,"hello",False,nums,strs] >>> type(lst) <type 'list'> >>> print lst [1, 'hello', False, [1, 2, 3, 4], ['hello', 'world']]
utilise l'indexation pour accéder aux éléments de la liste. L'index commence à 0, prend en charge les index négatifs et
>>> lst = [1,2,3,4,5] >>> print lst[0] >>> print lst[-1] >>> print lst[-2]
prend en charge les opérations de partitionnement et peut. accéder à un élément dans l'intervalle prend en charge différentes tailles de pas, et le partitionnement peut être utilisé pour les opérations d'insertion et de copie de données
nums = [1,2,3,4,5] print nums[0:3] #[1, 2, 3] #前三个元素 print nums[3:] #[4, 5] #后两个元素 print nums[-3:] #[3, 4, 5] #后三个元素 不支持nums[-3:0] numsclone = nums[:] print numsclone #[1, 2, 3, 4, 5] 复制操作 print nums[0:4:2] #[1, 3] 步长为2 nums[3:3] = ["three","four"] #[1, 2, 3, 'three', 'four', 4, 5] 在3和4之间插入 nums[3:5] = [] #[1, 2, 3, 4, 5] 将第4和第5个元素替换为[] 即删除["three","four"] 支持加法和乘法操作 lst1 = ["hello","world"] lst2 = ['good','time'] print lst1+lst2 #['hello', 'world', 'good', 'time'] print lst1*5 #['hello', 'world', 'hello', 'world', 'hello', 'world', 'hello', 'world', 'hello', 'world']
Méthodes prises en charge par la liste, vous pouvez utiliser la méthode suivante pour afficher les méthodes publiques prises en charge par la liste :
>>> [x for x in dir([]) if not x.startswith("__")] ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] def compare(x,y): return 1 if x>y else -1 #【append】 在列表末尾插入元素 lst = [1,2,3,4,5] lst.append(6) print lst #[1, 2, 3, 4, 5, 6] lst.append("hello") print lst #[1, 2, 3, 4, 5, 6] #【pop】 删除一个元素,并返回此元素的值 支持索引 默认为最后一个 x = lst.pop() print x,lst #hello [1, 2, 3, 4, 5, 6] #默认删除最后一个元素 x = lst.pop(0) print x,lst #1 [2, 3, 4, 5, 6] 删除第一个元素 #【count】 返回一个元素出现的次数 print lst.count(2) #1 #【extend】 扩展列表 此方法与“+”操作的不同在于此方法改变原有列表,而“+”操作会产生一个新列表 lstextend = ["hello","world"] lst.extend(lstextend) print lst #[2, 3, 4, 5, 6, 'hello', 'world'] 在lst的基础上扩展了lstextend进来 #【index】 返回某个值第一次出现的索引位置,如果未找到会抛出异常 print lst.index("hello") #5 #print lst.index("kitty") #ValueError: 'kitty' is not in list 出现异常 #【remove】 移除列表中的某个元素,如果待移除的项不存在,会抛出异常 无返回值 lst.remove("hello") print lst #[2, 3, 4, 5, 6, 'world'] "hello" 被移除 #lst.remove("kitty") #ValueError: list.remove(x): x not in list #【reverse】 意为反转 没错 就是将列表元素倒序排列,无返回值 print lst #[2, 3, 4, 5, 6, 'world'] lst.reverse() print lst #[2, 3, 4, 5, 6, 'world'] #【sort】 排序 print lst #由于上面的反转 目前排序为 ['world', 6, 5, 4, 3, 2] lst.sort() print lst #排序后 [2, 3, 4, 5, 6, 'world'] nums = [10,5,4,2,3] print nums #[10,5,4,2,3] nums.sort(compare) print nums #[2, 3, 4, 5, 10]
Convertir la liste en itérateur.
Le soi-disant itérateur est un objet avec une méthode suivante (cette méthode ne nécessite aucun paramètre lors de son appel). Lorsque la méthode suivante est appelée, l'itérateur renvoie sa valeur suivante. Si la méthode suivante est appelée mais que l'itérateur n'a aucune valeur à renvoyer, une exception StopIteration est levée. L'avantage des itérateurs par rapport aux listes est que l'utilisation d'itérateurs ne nécessite pas d'ajouter la liste à la mémoire en une seule fois, mais peut accéder aux données de la liste de manière séquentielle.
Utilisez toujours la méthode ci-dessus pour afficher les méthodes publiques de l'itérateur :
lst = [1,2,3,4,5] lstiter = iter(lst) print [x for x in dir(numiter) if not x.startswith("__")] >>>['next']
Oui, il n'y a qu'une seule méthode ensuite Pour un itérateur, vous pouvez faire ceci :
lst = [1,2,3,4,5] lstiter = iter(lst) for i in range(len(lst)): print lstiter.next() #依次打印 1 2 3 4 5
Type de tuple
Le type de tuple est une séquence comme la liste Contrairement à la liste, le type de tuple ne peut pas être modifié. La déclaration du tuple est la suivante :lst = (0,1,2,2,2) lst1=("hello",) lst2 = ("hello") print type(lst1) #<type 'tuple'> 只有一个元素的情况下后面要加逗号 否则就是str类型 print type(lst2) #<type 'str'>
Type de dictionnaire
Le type de dictionnaire est une collection de paires clé-valeur, similaire à Dictionary