Maison  >  Article  >  développement back-end  >  Comment utiliser des types de données complexes en Python

Comment utiliser des types de données complexes en Python

WBOY
WBOYavant
2023-06-04 09:22:16940parcourir

1. Séquence :

La séquence est un type de classe de base. Les types d'extension de séquence incluent : chaîne, tuple et liste

Comment utiliser des types de données complexes en Python

Les opérations qui peuvent être effectuées sur une séquence incluent l'indexation, le découpage, l'ajout, la multiplication et la vérification des membres.

De plus, Python dispose de méthodes intégrées pour déterminer la longueur d'une séquence et déterminer les éléments les plus grands et les plus petits.

2. Liste : [a1, a2], type de données variable

Liste : Liste est une extension du type séquence, très couramment utilisée

1 Création de liste

  • Liste est un type de séquence pouvant être modifié à. le fera après la création

  • Utilisez des crochets [] ou list() pour créer et utilisez des virgules pour séparer les éléments

  • Chaque type d'élément dans la liste peut être différent, il n'y a pas de limite de longueur

hobby_list = [hobby, 'run', 'girl']

print(id(hobby_list)) # 4558605960
print(type(hobby_list)) # 
print(hobby_list) # ['read', 'run', 'girl']

Si Vous souhaitez initialiser une liste d'une longueur de 10

list_empty = [None]*10
print(list_empty)
# [None, None, None, None, None, None, None, None, None, None]

Utilisez la fonction range() pour créer une liste :

hobby_list = list(range(5))
# [0, 1, 2, 3, 4]

2, liste composée et liste multidimensionnelle

hobby_list = ['read', 'run',['girl_name', 18, 'shanghai'] ]
print(hobby_list[2][1])#  取出girl的年龄 18

python crée une liste bidimensionnelle et écrit les paramètres requis dans cols et lignes, c'est-à-dire que vous pouvez

list_2d = [[0 for i in range(5)] for i in range(5)]
list_2d[0].append(3)
list_2d[0].append(5)
list_2d[2].append(7)
print(list_2d)
# [[0, 0, 0, 0, 0, 3, 5], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 7], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

L'exemple suivant convertit une liste matricielle 3X4 en une liste 4X3 :

# 以下实例展示了3X4的矩阵列表:
matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
]

# 以下实例将3X4的矩阵列表转换为4X3列表:
transposed=[[row[i] for row in matrix] for i in range(4)]
print(transposed)
# [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

# 以下实例也可以使用以下方法来实现:
transposed = []
for i in range(4):
    transposed.append([row[i] for row in matrix])
print(transposed)
# [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

3 Valeur d'index de liste

Le numéro d'index commence à 0.

hobby_list = ['read', 'run', 'girl']
# 索引序号      0       1      2

print(hobby_list[1])#  取出第二个爱好 <code>run

4. Modification de la liste

Vous pouvez modifier ou mettre à jour les éléments de données de la liste. Vous pouvez également utiliser la méthode append() pour ajouter des éléments de la liste. La méthode

hobby_list = [&#39;read&#39;, &#39;run&#39;, &#39;girl&#39;]
hobby_list[0] = &#39;write&#39;

list rend la liste facile à utiliser comme une pile. . Pour une structure de données spécifique comme une pile, le dernier élément inséré est le premier à être supprimé (premier entré, dernier sorti).

Utilisez la méthode append() pour ajouter un élément en haut de la pile. Utilisez la méthode pop() pour supprimer l'élément en haut de la pile sans spécifier d'index.

  • append : Ajouter un élément Par exemple :

    stack = [3, 4, 5]
    stack.append(6)
    stack.append(7)
    print(stack)
    # [3, 4, 5, 6, 7]
    
    print(stack.pop())
    # 7
    print(stack)
    # [3, 4, 5, 6]
    print(stack.pop())
    # 6
    print(stack.pop())
    # 5
    
    print(stack)
    # [3, 4]
  • 3. Compréhensions de listes
  • Les compréhensions de listes fournissent un moyen simple de créer des listes à partir de séquences. Généralement, les applications appliquent certaines opérations à chaque élément d'une séquence et utilisent le résultat comme élément pour générer une nouvelle liste ou créer une sous-séquence basée sur certains critères. Chaque compréhension de liste commence par for suivi d'une expression, puis zéro ou plusieurs clauses for ou if.

  • La liste générée est définie par les expressions qui suivent les instructions for et if dans le contexte. Si vous souhaitez que l'expression dérive un tuple, vous devez utiliser des parenthèses.

1. Formulaire d'écriture de dérivation de liste :

[expression pour une variable dans la liste]

[expression pour une variable dans une liste si condition]

    Exemple :
  • print([i for i in range(10)] )  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    print([i ** 2 for i in range(10)])  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
      
    print([0 for i in range(5)])  #[0, 0, 0, 0, 0]
    
    name_list = [&#39;nick&#39;, &#39;sean&#39;, &#39;jason&#39;, &#39;tank&#39;]
    for n in [name if name == &#39;nick&#39; else name + &#39;_a&#39; for name in name_list] :
        print(n)  # &#39;nick&#39;, &#39;sean_a&#39;, &#39;jason_a&#39;, &#39;tank_a&#39;
    
    li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    print( [x ** 2 for x in li]) # [1, 4, 9, 16, 25, 36, 49, 64, 81]
    print( [x ** 2 for x in li if x > 5]) # [36, 49, 64, 81]
    print(dict([(x, x * 10) for x in li])) # {1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60, 7: 70, 8: 80, 9: 90} #生成字典
    
    vec1 = [2, 4, 6]
    vec2 = [4, 3, -9]
    sq = [vec2[i] + vec2[i] for i in range(len(vec))]  # 实现列表相加
    print(sq)
    # [6, 7, -3]
    
    testList = [1, 2, 3, 4]
    
    def mul2(x):
        return x * 2
    
    
    print([mul2(i) for i in testList]) #使用复杂表达式或嵌套函数:
    # [2, 4, 6, 8]

    2. relation entre les déclarations

  • imbriquées.
  • La deuxième instruction à gauche est la couche la plus externe, allez d'un niveau vers la droite et la première instruction à gauche est le dernier niveau.

    [x*y for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]
  • Son ordre d'exécution est :
for x in range(1,5)
    if x > 2
        for y in range(1,4)
            if y < 3
                x*y

Exemple

print( [ (x, y) for x in range(10) if x % 2 if x > 3 for y in range(10) if y > 7 if y != 8]) #生成元组
# [(5, 9), (7, 9), (9, 9)]

print([x * y for x in [1, 2, 3] for y in [1, 2, 3]])
# [1, 2, 3, 2, 4, 6, 3, 6, 9]

4 Opérations de base des listes

ls1 = [&#39;python&#39;, 123]
ls2 = [&#39;java&#39;, 456]
print(ls1 * 2);  # [&#39;python&#39;, 123, &#39;python&#39;, 123] 将列表复制n次。
print(ls1 + ls2);  # [&#39;python&#39;, 123, &#39;java&#39;, 456] 连接两个列表
 
name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
del name_list[2]  # 删除索引2位置后的元素 
print(name_list)  # [&#39;nick&#39;, &#39;jason&#39;, &#39;sean&#39;]

del name_list[2:4] # 从列表中删除切片 ,删除第i-j位置的元素 
print(name_list)  # [&#39;nick&#39;, &#39;jason&#39;]

del name_list[:] #清空整个列表
print(name_list)  # []
del a  # 用 del 删除实体变量:


name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
print(&#39;tank sb&#39; in name_list)  #  成员运算:in; False
print(&#39;nick handsome&#39; not in name_list)  # 成员运算:in;True


name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
for name in name_list:  # for循环
    print(name)


a = [&#39;Google&#39;, &#39;Baidu&#39;, &#39;Runoob&#39;, &#39;Taobao&#39;, &#39;QQ&#39;]
for i in range(len(a)): # 结合range()和len()函数以遍历一个序列的索引
    print(i, a[i])
# 0 Google 1 Baidu 2 Runoob 3 Taobao 4 QQ


name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
print(name_list[0:3:2] )  # 切片  [&#39;nick&#39;, &#39;tank&#39;]

Par exemple : il y a la liste suivante, les éléments de la liste sont de type non hachable, supprimez les doublons et obtenez un nouveau. liste, et la nouvelle liste doit être Conserver l'ordre d'origine de la liste

stu_info_list = [
    {&#39;name&#39;: &#39;nick&#39;, &#39;age&#39;: 19, &#39;sex&#39;: &#39;male&#39;},
    {&#39;name&#39;: &#39;egon&#39;, &#39;age&#39;: 18, &#39;sex&#39;: &#39;male&#39;},
    {&#39;name&#39;: &#39;tank&#39;, &#39;age&#39;: 20, &#39;sex&#39;: &#39;female&#39;},
    {&#39;name&#39;: &#39;tank&#39;, &#39;age&#39;: 20, &#39;sex&#39;: &#39;female&#39;},
    {&#39;name&#39;: &#39;egon&#39;, &#39;age&#39;: 18, &#39;sex&#39;: &#39;male&#39;},
]

new_stu_info_list = []
for stu_info in stu_info_list:
    if stu_info not in new_stu_info_list:
        new_stu_info_list.append(stu_info)

for new_stu_info in new_stu_info_list:
    print(new_stu_info)

5. Fonctions liées à la liste

name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
print(len(name_list))  # 4 列表元素个数:len;
print(min(name_list))  # jason 返回序列s的最小元素;
print(max(name_list))  # tank 返回序列s的最大元素

name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
name_list.insert(1, &#39;handsome&#39;) # insert(i,x):在列表的第i位置增加元素x 
print(name_list)  # [&#39;nick&#39;, &#39;handsome&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]

name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
print(name_list.remove(&#39;nick&#39;))  # remove(x):将列表ls中出现的第一个元素x删除 ,None ;
print(name_list)  # [&#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]

name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
print(name_list.count(&#39;nick&#39;))  # 1  ;统计某个元素在列表中出现的次数

name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
print(name_list.index(&#39;nick&#39;))  # 0;返回元素所在列表中的索引

name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
name_list.clear() # 删除列表中所有元素 
print(name_list)  # []

name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
print(name_list.copy())  # 生成一个新列表,赋值原列表中所有元素  [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]

name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
name_list2 = [&#39;nick handsome&#39;]
name_list.extend(name_list2) # 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
print(name_list)  # [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;, &#39;nick handsome&#39;]

name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
name_list.reverse() # 将列表ls中的元素反转 
print(name_list)  # [&#39;sean&#39;, &#39;tank&#39;, &#39;jason&#39;, &#39;nick&#39;]

name_list = [&#39;nick&#39;, &#39;jason&#39;, &#39;tank&#39;, &#39;sean&#39;]
name_list.sort() # 排序,使用用sort列表的元素必须是同类型的
 
print(name_list)  # [&#39;jason&#39;, &#39;nick&#39;, &#39;sean&#39;, &#39;tank&#39;]

name_list.sort(reverse=True) # 倒序
print(name_list)  # [&#39;tank&#39;, &#39;sean&#39;, &#39;nick&#39;, &#39;jason&#39;]

6. Tuple (tuple) : (a1, a2)

1. un type de liste. Une fois créé, ne peut pas être modifié.

color = (0x001100, "blue", creature) # 使用小括号 () 或 tuple() 创建,元素间用逗号分隔。
print(type(color))  # 

creature = "cat", "dog", "tiger", "human" # 可以使用或不使用小括号。即元组由若干逗号分隔的值组成。
print(type(creature))  #

Notez la différence avec les chaînes :

name_str = (&#39;egon&#39;)  # ()只是普通包含的意思
name_tuple = (&#39;egon&#39;,)  # 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作字符串使用:

print(type(name_str))  # 
print(type(name_tuple))  #

2. Opérations sur les tuples

valeur d'index, découpage (indépendamment de la tête et de la queue, de la taille du pas), longueur de la longueur, opérations des membres dans et hors dedans, boucles, nombre, les index, etc. sont identiques aux listes, mais les valeurs ne sont pas modifiées.

Les valeurs des éléments dans les tuples ne peuvent pas être modifiées, mais nous pouvons connecter et combiner des tuples, comme le montre l'exemple suivant :

tup1 = (12, 34.56);
tup2 = (&#39;abc&#39;, &#39;xyz&#39;)

# 以下修改元组元素操作是非法的。
# tup1[0] = 100

# 创建一个新的元组
tup3 = tup1 + tup2;
print(tup3)  # (12, 34.56, &#39;abc&#39;, &#39;xyz&#39;)
namedtuple (named tuple) : Une version améliorée de Python tuple

.

from collections import namedtuple

User = namedtuple(&#39;User&#39;, &#39;name sex age&#39;) # 定义一个namedtuple类型User,并包含name,sex和age属性。
user = User(name=&#39;Runoob&#39;, sex=&#39;male&#39;, age=12) # 创建一个User对象

print(user.age)  # 12

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer