Maison > développement back-end > Tutoriel Python > Python - Concaténer des combinaisons jusqu'à K

Python - Concaténer des combinaisons jusqu'à K

PHPz
Libérer: 2023-08-26 23:01:12
avant
1186 Les gens l'ont consulté

Python - 将组合连接直到 K

Concaténer un groupe jusqu'à K signifie concaténer des éléments dans un groupe ou une séquence jusqu'à ce qu'une condition spécifique soit remplie. En Python, nous pouvons utiliser diverses méthodes pour implémenter la concaténation de groupes jusqu'à K, comme l'utilisation de boucles et d'accumulateurs, l'utilisation de la fonction itertools.groupby() et l'utilisation d'expressions régulières. Dans cet article, nous utiliserons et explorerons toutes ces méthodes pour réaliser la concaténation de groupes jusqu'à K ou satisfaire une certaine condition.

Méthode 1 : Utiliser des boucles et des accumulateurs

Cette méthode utilise des boucles et des accumulateurs pour regrouper les éléments jusqu'à ce que la valeur cible K soit atteinte. Il parcourt la liste, accumulant les éléments dans des groupes temporaires jusqu'à ce que K soit trouvé. Une fois K rencontré, il est combiné en une chaîne et ajouté à la liste des résultats. Enfin, les éléments restants du groupe sont ajoutés à la liste résultante.

Grammaire

list_name.append(element)
Copier après la connexion
Copier après la connexion

Ici, la fonction append() est une méthode de liste utilisée pour ajouter des éléments à la fin de la liste. Il modifie la liste d'origine en ajoutant les éléments spécifiés en tant que nouveaux éléments à la liste d'origine.

Exemple

Dans l'exemple ci-dessous, la fonction group_concatenate_till_k accepte une liste lst et la valeur cible K. Il initialise un résultat de liste vide pour stocker les éléments groupés et un groupe de liste vide pour accumuler des éléments jusqu'à ce que K soit rencontré. Parcourez chaque élément de la liste. Si les termes sont égaux à K, les éléments du groupe sont concaténés en une chaîne et ajoutés au résultat, puis le groupe est réinitialisé à une liste vide. Si l'élément n'est pas égal à K, ajoutez l'élément au groupe.

Enfin, il ajoute tous les éléments restants du groupe au résultat et renvoie le résultat.

def group_concatenate_till_k(lst, K):
    result = []
    group = []
    for item in lst:
        if item == K:
            result.append(''.join(group))
            group = []
        else:
            group.append(item)
    result.append(''.join(group))
    return result

# Example usage
lst = ['a', 'b', 'c', '', 'd', 'e', '', '', 'f']
K = ''
output = group_concatenate_till_k(lst, K)
print(output)
Copier après la connexion

Sortie

['abc', 'de', 'f']
Copier après la connexion
Copier après la connexion

Méthode 2 : utilisez itertools.groupby()

Dans cette méthode, la fonction groupby du module itertools est utilisée pour regrouper des éléments consécutifs en fonction d'une condition spécifique. En spécifiant la condition via la fonction lambda, il divise la liste en groupes qui ne contiennent pas K. Les éléments de chaque groupe sont concaténés dans une chaîne et ajoutés à la liste résultante.

Grammaire

list_name.append(element)
Copier après la connexion
Copier après la connexion

Ici, la fonction append() est une méthode de liste utilisée pour ajouter des éléments à la fin de la liste. Il modifie la liste d'origine en ajoutant les éléments spécifiés en tant que nouveaux éléments à la liste d'origine.

itertools.groupby(iterable, key=None)
Copier après la connexion

Ici, la méthode groupby() accepte un objet itérable en entrée et une fonction clé facultative. Il renvoie un itérateur qui génère un tuple composé de clés et . Les fonctions clés sont utilisées pour déterminer les critères de regroupement.

Exemple

Dans l'exemple ci-dessous, la fonction group_concatenate_till_k accepte une liste lst et la valeur cible K. Il utilise la fonction groupby pour regrouper les éléments consécutifs dans la liste en fonction de la condition lambda x : x != K. La fonction groupby renvoie une paire de clés (le résultat de la condition) et un itérateur du groupe correspondant. En vérifiant si la clé est True, on détermine le groupe qui ne contient pas K et on concatène les éléments pour former une chaîne. La chaîne est ensuite ajoutée à la liste des résultats.

from itertools import groupby

def group_concatenate_till_k(lst, K):
    result = []
    for key, group in groupby(lst, lambda x: x != K):
        if key:
            result.append(''.join(group))
    return result

# Example usage
lst = ['a', 'b', 'c', '', 'd', 'e', '', '', 'f']
K = ''
output = group_concatenate_till_k(lst, K)
print(output)
Copier après la connexion

Sortie

['abc', 'de', 'f']
Copier après la connexion
Copier après la connexion

Méthode 3 : Utiliser des expressions régulières

Cette méthode consiste à utiliser des expressions régulières pour diviser la liste en groupes en fonction d'une valeur cible K. Utilisez une fonction d'expression régulière pour créer le modèle, en vous assurant que K n'est pas au début du groupe. Utilisez ensuite la fonction re.split pour diviser la chaîne concaténée en fonction de ce modèle afin d'obtenir les éléments groupés requis.

Grammaire

result = re.split(pattern, string)
Copier après la connexion

Ici, la fonction re.split du module re accepte deux paramètres : pattern et string. pattern est une expression régulière qui définit les critères de fractionnement et string est la chaîne d'entrée à diviser. Cette fonction renvoie une liste de sous-chaînes produites par l'opération de fractionnement selon le modèle spécifié.

Exemple

Dans l'exemple ci-dessous, la fonction group_concatenate_till_k accepte une liste lst et la valeur cible K. Il crée un modèle d'expression régulière en échappant à la valeur K et en utilisant une assertion anticipée négative pour garantir que K n'est pas au début d'un groupe. La chaîne concaténée est ensuite divisée en fonction du modèle construit à l'aide de la fonction re.split. La liste résultante contenant les éléments groupés est renvoyée en sortie.

import re

def group_concatenate_till_k(lst, K):
    pattern = f"(?!^{re.escape(K)}){re.escape(K)}"
    result = re.split(pattern, ''.join(lst))
    return result

# Example usage
lst = ['a', 'b', 'c', '', 'd', 'e', '', '', 'f']
K = ''
output = group_concatenate_till_k(lst, K)
print(output)
Copier après la connexion

Sortie

['a', 'b', 'c', 'd', 'e', 'f', '']
Copier après la connexion

Conclusion

Dans cet article, nous avons expliqué comment joindre des éléments d'une liste ou d'une séquence en groupes jusqu'à ce qu'une condition spécifique K soit remplie. Nous avons exploré trois approches : utiliser des boucles et des accumulateurs, itertools.groupby() et des expressions régulières. En fonction de vos besoins et préférences, vous pouvez choisir la méthode la mieux adaptée à votre cas d'utilisation spécifique.

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:tutorialspoint.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal