3 votes

Comment comparer deux listes avec deux conditions ?

Ce que j'essaie de faire spécifiquement

symbol_list = ["....firstline.\\.||hi",
               "pythonisasnake..\....",
               "||||last.\\|line\\..."]

normal_list = ["ABCDfirstlineEFGHIJhi",
               "pythonisasnakeKLMNOPQ",
               "RSTUlastVWXYlineZABCD"]

Dans le symbol_list Je veux remplacer les symboles par la lettre qui se trouve à la position correspondante dans le document normal_list et je veux remplacer les non-symboles dans la liste par un *

  • Les symboles seront toujours . \ |

Le résultat attendu :

new_list = ["ABCD*********EFGHIJ**",
            "**************KLMNOPQ",
            "RSTU****VWXY****ZABCD"]

Quelle est la solution pour y parvenir ?

Ce que j'ai essayé de faire

Pour les deux listes, je devais en quelque sorte accéder à chaque élément de chaque ligne, ce qui me semblait vraiment compliqué à faire. J'ai essayé de commencer avec des boucles for :

for symbol_row in symbol_list:
    for symbol_item in symbol_row:
        for normal_row in normal_list:
            for normal_item in normal_row:

C'était déroutant et il semble qu'il soit recommandé de faire au maximum deux

J'ai ensuite essayé de vérifier l'une des conditions :

if symbol_item in (".","\\","|"): # because \ is an escape character
    symbol_row = symbol_row.replace(symbol_item, normal_item)

Puis j'ai ajouté cette nouvelle ligne à new_list mais ma liste est devenue 10 fois plus longue qu'avant après l'avoir imprimée.

new_list.append(symbol_row)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X