Liste python

Résolu/Fermé
kl_0888 Messages postés 2 Date d'inscription lundi 26 décembre 2022 Statut Membre Dernière intervention 26 décembre 2022 - 26 déc. 2022 à 12:23
 ouplaboum - 26 déc. 2022 à 18:29

Bonjour,

Auriez-vous une idée de modification pour passer de ce style de liste :

>>>*[[i] , [i+1] for i in range(c)]

>>>[1],[2],[2],[3] #c=3

Merci encore de votre aide.


Windows / Chrome 108.0.0.0

2 réponses

yg_be Messages postés 22507 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 mars 2024 1 449
26 déc. 2022 à 14:25

bonjour,

2 exemples:

c=4
result1 = [[i, i+1] for i in range(1,c)]
print (result1)
result=[x for l in result1 for x in l]
print(result)
c=4
result=[]
for i in range(1,c):
    result+=[i]
    result+=[i+1]
print(result)

1

Bonjour !

Voici comment vous pourriez obtenir une liste de la forme [i, i+1] pour chaque valeur de i dans l'intervalle [0, c-1] :

result = [[i, i+1] for i in range(c)]

Par exemple, si vous définissez c = 3, vous obtiendrez la liste suivante :

result = [[0, 1], [1, 2], [2, 3]]

Si vous souhaitez plutôt obtenir une liste de la forme [i+1] pour chaque valeur de i dans l'intervalle [0, c-1], vous pouvez simplement supprimer la première colonne de chaque sous-liste, comme ceci :

result = [[i+1] for i in range(c)]

Avec c = 3, cela donnera :

result = [[1], [2], [3]]

J'espère que cela répond à votre question ! N'hésitez pas à me poser d'autres questions si vous avez besoin d'aide ou de précisions.

0
kl_0888 Messages postés 2 Date d'inscription lundi 26 décembre 2022 Statut Membre Dernière intervention 26 décembre 2022
26 déc. 2022 à 15:02

Bonjour, mon souci dans cette liste est que je voudrais pouvoir l'écrire de cette manière :

*[*[[i] , [i+1]] for i in range(c)] 

mais cela n'est pas correct alors, je me demande comment puis-je l'écrire pour obtenir :

[1],[2],[2],[3] #c=3

0
Noa > kl_0888 Messages postés 2 Date d'inscription lundi 26 décembre 2022 Statut Membre Dernière intervention 26 décembre 2022
26 déc. 2022 à 16:33

Pour obtenir la liste que vous souhaitez, il faut ajouter une itération supplémentaire dans la liste de compréhension. Vous pouvez par exemple utiliser la fonction range pour itérer sur l'intervalle [0, c], comme ceci :

result = [[[i] , [i+1]] for i in range(c+1)]

Avec c = 3, vous obtiendrez la liste suivante :

result = [[[0], [1]], [[1], [2]], [[2], [3]], [[3], [4]]]

Pour obtenir la liste sous la forme [1], [2], [2], [3], vous pouvez utiliser une liste de compréhension avec une itération sur l'intervalle [1, c+1], comme ceci :

result = [[i] for i in range(1, c+2)]

Avec c = 3, vous obtiendrez la liste suivante :

result = [[1], [2], [3], [4]]

J'espère que cela vous aidera ! N'hésitez pas à me poser d'autres questions si vous avez besoin de précisions ou d'aide.

0

Bonsoir, ce que tu racontes n'a aucun sens, ce n'est pas en changeant la valeur de c que cela va changer grand chose.

.

De toute façon, tant qu'on ne saura pas la relation qu'il y a entre la valeur de c et le fait que la valeur « centrale » doit être doublée, ça va être difficile de donner une solution viable.

.

Qu'en est-il si c a comme valeur 4, 5, 6, 11, 17, 20, etc ?

Si c = 4, est-ce qu'on doit obtenir 1, 2, 2, 3, 3, 3, 4 ? 1, 2, 2, 3, 3, 4 ? 1, 2, 3, 3, 3, 4 ? Bref, il faut comprendre la logique, et ça seul kl_0888  est en mesure de la fournir.

0