列表生成式是一种基于其他iterable(如集合、元组、其他列表等)创建列表的方法。它还可以用更简单、更吸引人的语法表示for和if循环。列表生成式比for循环要快得多。
列表生成式的基本结构如下:
List=[ expression for item in iterable (if conditional) ]
示例:
if __name__ == '__main__':
print('+++++++++++++++++ 简单用法 ++++++++++++++++')
words = ['data', 'science', 'machine', 'learning']
'''
简单用法
'''
# 直接循环用法
a = []
for w in words:
a.append(w)
print('循环用法:', a)
# 列表生成式简单用法
b = [w for w in words]
print('列表生成式:', b)
print('+++++++++++++++++ 条件判断 ++++++++++++++++')
c = []
for w in words:
if len(w) > 5:
c.append(w)
print('循环用法:', c)
d = [w for w in words if len(w) > 5]
print('列表表达式:', d)
print('+++++++++++++++++ 复杂用法 ++++++++++++++++')
data = [{'name': '张三'}, {'name': '李四'}, {'name': '王五'}]
data_list = []
for d in data:
data_list.append(d['name'])
print('循环用法:', data_list)
value_list = [d['name'] for d in data]
print('列表表达式:', value_list)
运行效果:
?
在大多数情况下,列表生成式优先于for和if循环,因为:
- 它们比for循环快得多(将整个输出列表加载到内存中)
- 它们被认为比循环和映射函数更具python特性
- 列表生成式的写法更简洁
列表生成式是一种高效的操作。对于简单的任务,生成式的语法很容易,在复杂的情况下可能会变得棘手。
如果你很难创建或生成式复杂的列表生成式,请尝试使用循环编写。
|