python列表、集合和字典的推导式
前言
虽然推导式和写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))}