示例:使用for循环从1打印到100的数
l1 = [] for i in range(1,101): l1.append(i) print(l1)
1、列表推导式
# 凡是用列表推导式能构建的数据,
# python代码都可以构建,列表推导式不能构建的数据,python代码亦可以可以构建
分为两种模式:
1、循环模式 [变量(加工后的变量) for 变量 in iterable]
2、筛选模式 [变量(加工后的变量) for 变量 in iterable if 条件]
使用列表推导式打印1到100
l1 = [i for i in range(1, 101)] print(l1)
# 构建一个列表:['python1期', 'python2期'....,'python24期'] print(['python%s期' % i for i in range(1, 25)])
2、筛选模式 [变量(加工后的变量) for 变量 in iterable if 条件]
# 30以内能被2整除的 l1 = [i for i in range(31) if i % 2 == 0] print(l1) # 1,[10以内所有数的平方: 1,4,9,16,.....100] print([i*i for i in range(1, 11)]) print([i**2 for i in range(1, 11)]) # 2,[30以内能被3整除的数的平方:39,36,81....900] print([i**2 for i in range(1, 31) if i % 3 == 0]) # 3、过滤掉l1列表长度小于3的字符串列表,并将剩下的转换成大写字母 l1 = ['alex', 'taibai', 'wusir', 're', 'ab'] print([i.upper() for i in l1 if len(i) > 3])
2、生成器表达式
生成器表达式: (i*i for i in range(1000000000) 用() 括起来,其他规则与列表推导式一致。
列表是用[],生成器使用(),其他都一样
l1 = (i for i in range(1, 101)) print(l1)
g1 = (i*i for i in range(1000000000)) g1 = (i*i for i in range(1000)) print(g1.__next__())
3、列表表达式和生成器表达式优缺点
列表推导式,生成器表达式:
优点:构造简单,一行完成
缺点:1,不能排错。
2,他不能构建复杂的数据结构
补充: