python列表、集合和字典的推导式

python May 15, 2020

前言

虽然推导式和写if else 循环的代码,逻辑上是等价的。但是就像一些简单的场景中,直接使用lambda表达式要比定义一个函数来的方便,简洁的多。列表推导式作为一种语法糖,提供了一种简洁方便的方式来生成列表,集合和字典。

列表推导式

格式

[expr for val in collection if condition]

等价于:

result=[]
for val in collection:
    if condition:
      result.append(expr)

使用例子:

下面的例子提取列表中以a开头的元素,并且返回大写字母的结果。


string = ['a', 'as', 'bat', 'car', 'dove', 'python']

result = [ item.upper()  for item in string  if item.startswith('a') ]


使用例子:

下面的例子获取列表中每个元素的字符串长度

string = ['a', 'as', 'bat', 'car', 'dove', 'python']
len_result = [len(item) for item in string]

集合推导式

格式

{expr for val in collection if condition}

集合推导式和列表推导式唯一的区别就是使用大括号

字典推导式

格式

{key-expr : value-expr for val in collection if condition }

使用例子:

下面的例子是一个生成列表索引为key,值为value的字典

string = ['a', 'as', 'bat', 'car', 'dove', 'python']
map_result = {index: string[index] for index in range(len(string))}