l1 = []
for i in range(1, 11):
l1.append(i)
print(l1)
l2 = [i for i in range(1, 11)]
print(l2)
l3 = [i ** 2 for i in range(1, 11)]
print(l3)
l4 = [i for i in range(0, 101, 2)]
print(l4)
l5 = [f"我的序号是{i}" for i in range(1, 101)]
print(l5)
l6 = [4, 3, 2, 6, 5, 5, 7, 8]
print([i for i in l6 if i > 3])
l7 = [i for i in range(1, 31) if i % 3 == 0]
print(l7)
l8 = ['abcd', 'caiyongxxxx', 'aa', 'b', 'nimenhao']
print([i.upper() for i in l8 if len(i) > 3])
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
print([name for i in names for name in i if name.count('e') == 2])
gen = (i**2 for i in range(10))
print(gen)
"""
生成器表达式和列表推导式的区别:
1.列表推导式比较耗内存,所有数据一次性加载到内存。而.生成器表达式遵循迭代器协议,逐个产生元素。
2.得到的值不一样,列表推导式得到的是一个列表.生成器表达式获取的是一个生成器
3.列表推导式一目了然,生成器表达式只是一个内存地址。
"""
lst = [1,2,3,-1,-3,-7,9]
s = {abs(i) for i in lst}
print(s)