Comprehension de listes imbriquées
Les compréhensions de listes imbriquées fournissent un outil puissant pour générer des structures de données complexes de manière concise et efficace. Pour comprendre leur comportement, décomposons leur structure.
Syntaxe générale :
[exp2([exp1 for x in xSet]) for y in ySet]
Traduction en forme de boucle étendue :
result = [] for y in ySet: innerResult = [] for x in xSet: innerResult.append(exp1) exp2Result = exp2(innerResult) result.append(exp2Result)
Cas simplifiés :
[exp1 pour x dans xSet pour y dans ySet] :
result = [] for x in xSet: for y in ySet: result.append(exp1)
[[exp1 pour x dans xSet] pour y dans ySet] :
result = [] for y in ySet: innerResult = [] for x in xSet: innerResult.append(exp1) result.append(innerResult)
Exemple :
La compréhension de liste imbriquée suivante :
[(min([row[i] for row in rows]), max([row[i] for row in rows])) for i in range(len(rows[0]))]
Génère une liste de tuples, où chaque tuple contient les valeurs minimales et maximales pour une colonne donnée sur toutes les lignes de la liste des lignes . La forme de boucle développée équivalente serait :
result = [] for i in range(len(rows[0])): innerResult = [] for row in rows: innerResult.append(row[i]) innerResult2 = [] for row in rows: innerResult2.append(row[i]) tuple = (min(innerResult), max(innerResult2)) result.append(tuple)
Points clés :
En comprenant cette approche systématique, vous pouvez appliquer le concept à un large éventail de variations de compréhension de liste.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!