1
votes

Créer des tuples à partir d'une liste en Python

J'ai ce tableau:

lst2=  [('A', 'D'),
          ('B', 'D'),
          ('C', 'D')]

Comment pourrais-je ajouter une chaîne «D» à chaque élément et convertir chaque ensemble en tant que tuple:

lst = ['A', 'B', 'C']


5 commentaires

list2 = [(e, 'D') pour e dans la liste]


Le dernier est-il censé être ('C', 'D') ? Et qu'avez-vous essayé? Pour quoi avez-vous spécifiquement besoin d'aide?


('A', 'D') n'est pas du tout une sous-liste. C'est un tuple.


Merci, je vais faire les corrections.


Une autre façon: [tuple (x + 'D') for x in lst] (en supposant que tous les éléments de votre liste sont des chaînes)


6 Réponses :


1
votes
list2 = [(i, 'D') for i in list]
(apart from the fact that list is a very bad variable name)

0 commentaires

5
votes

Comme ça, en utilisant une compréhension de liste :

lst  = ['A', 'B', 'C']
lst2 = [(x, 'D') for x in lst]

lst2
=> [('A', 'D'), ('B', 'D'), ('C', 'D')]

Au fait, c'est une mauvaise idée d'appeler une variable list , qui se heurte à une fonction intégrée. Je l'ai renommé.


0 commentaires

1
votes

Une autre option utilisant zip:

x = ['A', 'B', 'C']
res = list(zip(x,'D'*len(x)))


0 commentaires

3
votes

Une autre solution consiste à utiliser zip_longest

[('A', 'D'), ('B', 'D'), ('C', 'D')]

le résultat sera:

from itertools import zip_longest
list(zip_longest(['A', 'B', 'C'], [], fillvalue='D'))


0 commentaires

1
votes
list1 = ['A', 'B', 'C']
list2 = []
for i in list1:
    list2.append((i, 'D'))
print(list2)

0 commentaires

1
votes

Vous pouvez utiliser la fonction product():

from itertools import product

lst = ['A', 'B', 'C']

list(product(lst, 'D'))
# [('A', 'D'), ('B', 'D'), ('C', 'D')]


0 commentaires