# 列表推导式 # >>>用一行代码构建一个比较复杂有规律的列表 print([i for i in range(100)]) # 列表推导式分为两类 # 一.循环模式:[变量(加工后的变量) for 变量 in iterable(可迭代对象)] # 习题 # 1.将10以内所有的整数的平方写入列表 print([i**2 for i in range(1, 11)]) # 2.100以内所有的偶数写入列表 print([i for i in range(0, 101, 2)]) # 3.从python1期到python100期写入列表lst lst = [f'python{i}期' for i in range(1, 101)] print(lst) # 二.筛选模式:[变量(加工后的变量) for 变量 in iterable(可迭代对象) if 条件] # 习题 # 1.30以内能被3整除的数 l1 = [i for i in range(1, 31) if i % 3 == 0] print(l1) # 2.过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 l2 = ['barry', 'ab', 'alex', 'wusir', 'xo'] print( [i.upper() for i in l2 if len(i) >= 3]) # 3.找到嵌套列表中名字含有两个'e'的所有名字,变成大写并保存到列表中 names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'], ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']] """ 正常思路 lst = [] for ls in names: for name in ls: if name.count('e') == 2: lst.append(name) print(lst) """ lst = [name.upper() for ls in names for name in ls if name.count('e') == 2] print(lst)
列表推导式只能构建比较复杂并且有规律的列表。超过三层循环才能构建成功的,就不建议使用列表推导式
列表推导式与生成器表达式的区别:
写法:[] 和 ()