列表推导式

# 列表推导式  

# >>>用一行代码构建一个比较复杂有规律的列表
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)

列表推导式只能构建比较复杂并且有规律的列表。超过三层循环才能构建成功的,就不建议使用列表推导式

列表推导式与生成器表达式的区别:

  写法:[] 和 ()

原文地址:https://www.cnblogs.com/GOD-L/p/13528287.html