Liste python

Résolu
kl_0888 Messages postés 2 Statut Membre -  
 ouplaboum -

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

A voir également:

2 réponses

yg_be Messages postés 24281 Statut Contributeur Ambassadeur 1 584
 

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
Noa
 

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 Statut Membre
 

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 Statut Membre
 

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
ouplaboum > Noa
 

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