J'ai une solution de travail pour la création d'une liste certains des nombres aléatoires, compter leurs occurrencies, et le résultat dans un dictionnaire qui donne les éléments suivants:comment accéder à une liste comprehensioned imbriquée
random_ints = [random.randint(0,4) for _ in range(6)]
dic = {x:random_ints.count(x) for x in set(random_ints)])
de telle sorte que pour, disons [0,2,1,2,1,4] j'obtiens {0: 1, 1: 2, 2: 2, 4: 1}
Je me demandais s'il est possible d'exprimer ceci dans un un liner, de préférence sans l'utilisation d'une fonction de bibliothèque - je veux voir ce qui est possible avec python :) Lorsque j'essaie d'intégrer les deux lignes en une seule, je ne sais pas comment exprimer les deux références à la même liste comprimée de random_ints .. ??? Je m'y attendais quelque chose comme:
dic = {x:random_ints.count(x) for x in set([random.randint(0,4) for _ in range(6)] as random_ints))
qui bien sûr ne fonctionne pas ...
Je regardais la liste (imbriquée) compréhensions ici sur, mais je ne pouvais pas appliquer les solutions que je trouvais à mon problème.
merci, s.
Donc ce faux itération sur la one-element-List (ou 1-uplet comme dans la solution de @Schoolboy) est le moyen d'obtenir la Liste compréhensible nommée pour plus de référence dans la compréhension principale - cool. Mais cela ne devrait pas être fait parce que son concept n'est pas propre - même si je n'ai plus besoin de la liste aléatoire. Je pense que je l'ai eu :) - merci beaucoup! – user1243904
@ user1243904: En général, ce n'est pas Pythonic d'essayer de mettre les choses en une seule ligne juste pour être laconique. Si c'est plus lisible en deux lignes, utilisez deux lignes. – BrenBarn