列表推导式与生成器表达式

l1 = [i for i in range(1,11)]
print(l1)   #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 列表推导式分两类
# 循环模式:
# 循环模式:[变量(加工后的变量) for  变量  in  iterable]
# 将10以内所有整数的平方写入列表。
ret = [i**2 for i in range(1,11)]
print(ret)  #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# # 100以内所有的偶数写入列表.
# print([i for i in range(2, 101, 2)])

# 从python1期到python100期写入列表lst
# print([f'python{i}期' for i in range(1,101)])

# 筛选模式
# 筛选模式:[变量(加工后的变量) for  变量  in  iterable if 条件]
# 30以内能被3整除的数
# l1 = [i for i in range(1,31) if i%3 == 0]
# print(l1)
# 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
# l1 = ['barry', 'ab', 'alex', 'wusir', 'xo']
# print([i.upper() for i in l1 if len(i) >= 3 ])

# 含有两个'e'的所有的人名全部大写留下来
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
         ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
l1 = []
for i in names:
    for name in i:
        if name.count('e') == 2:
            l1.append(name)
print(l1)
print([name.upper() for i in names for name in i if name.count('e') == 2])

 生成器表达式:

# 生成器表达式:
# 与列表推导式的写法几乎一模一样,也有筛选模式,循环模式,多层循环构建。写法上只有一个不同:
# [] 换成 ().
print([i for i in range(1,11)])
print((i for i in range(1,11)))
obj = (i for i in range(1,11))
print(next(obj))
print(next(obj))
print(next(obj))
print(next(obj))
print(next(obj))
for i in obj:
    print(i)

 

列表:

# list
# l1 = [1,2,3,4]
# l2 = list()
# l2 = list('fjfdsklagjsflag')
# print(l2)

 

posted @ 2020-03-08 22:09  Dylan123  阅读(233)  评论(0)    收藏  举报