Maison > développement back-end > Tutoriel Python > Pourquoi est-ce que j'obtiens « TypeError : les indices de liste doivent être des entiers ou des tranches, pas des str » lors de la fusion de listes en Python ?

Pourquoi est-ce que j'obtiens « TypeError : les indices de liste doivent être des entiers ou des tranches, pas des str » lors de la fusion de listes en Python ?

Patricia Arquette
Libérer: 2024-11-14 15:52:02
original
372 Les gens l'ont consulté

Why Am I Getting

Gestion de 'TypeError : les indices de liste doivent être des entiers ou des tranches, et non des chaînes' en Python lors de la fusion de listes

En Python, tentative d'accès un élément de liste utilisant un index de chaîne entraîne souvent l'erreur « TypeError : les indices de liste doivent être des entiers ou des tranches, pas une chaîne ». Cette erreur se produit généralement lors de la fusion de deux listes en un seul tableau.

Pour éviter cette erreur, il est crucial de s'assurer que l'index utilisé pour accéder aux éléments de la liste est un entier. Vous trouverez ci-dessous les problèmes spécifiques dans le code Python fourni et la manière correcte de les résoudre :

  1. Conversion de array_length en Integer : Dans le code d'origine, array_length est attribué la représentation sous forme de chaîne de la longueur de array_dates. Au lieu de cela, il doit s'agir de la valeur de longueur entière, qui peut être obtenue en utilisant len(array_dates).

    array_length = str(len(array_dates))
    # Convert to:
    array_length = len(array_dates)
    Copier après la connexion
  2. Utilisation de range() pour Loop : Le for la boucle parcourt les indices de result_array. Cependant, la définition de la boucle utilise array_length comme itérable, qui est une chaîne. Au lieu de cela, utilisez range(array_length) pour parcourir des entiers.

    for i in array_length:
    # Convert to:
    for i in range(array_length):
    Copier après la connexion
  3. Incrémentation automatique de l'index : Dans le code d'origine, i est incrémenté manuellement après chaque itération. Ceci n'est pas nécessaire car la boucle for incrémentera automatiquement la variable d'index.

    i += 1
    # Remove this line
    Copier après la connexion

Approche alternative utilisant zip() :

Alternativement, pour fusionner deux listes d'égale longueur, on peut utiliser la fonction zip(), qui prend les éléments correspondants de chaque liste et crée une nouvelle liste de tuples. Cette approche est souvent plus concise et évite le besoin d'une indexation manuelle.

dates = ['2020-01-01', '2020-01-02', '2020-01-03']
urls = ['www.abc.com', 'www.cnn.com', 'www.nbc.com']

csv_file_path = '/path/to/filename.csv'

with open(csv_file_path, 'w') as fout:
    csv_writer = csv.writer(fout, delimiter=';', lineterminator='\n')
    result_array = zip(dates, urls)
    csv_writer.writerows(result_array)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal