Liste python
Résoluouplaboum -
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 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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) -
Bonjour !
Voici comment vous pourriez obtenir une liste de la forme
[i, i+1]pour chaque valeur deidans 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 deidans 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.
-
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
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
rangepour 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.
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.
-