#列表生成式
x = [i for i in range(10)]
print(x) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print([i*i for i in range(10)]) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
#例一:30以内所有能被3整除的数
num = [x for x in range(30) if x % 3 is 0]
print(num) #[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
#例二:30以内所有能被3整除的数的平方
num = [x*x for x in range(30) if x % 3 == 0]
print(num) #[0, 9, 36, 81, 144, 225, 324, 441, 576, 729]
# 例三:找到嵌套列表中名字含有两个‘e’的所有名字
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
print([name for lst in names for name in lst if name.count('e') >= 2]) # 注意遍历顺序,这是实现的关键
#['Jefferson', 'Wesley', 'Steven', 'Jennifer']
#字典的key和value对调
dict1={"aa":11,"bb":22}
print({dict1[k]: k for k in dict1}) #{11: 'aa', 22: 'bb'}
#列表去重
list1 = [11,22,33,44,33,55,22,00]
list2= []
for i in list1:
if i not in list2:
list2.append(i)
print(list2)
print("****************")
print(list(set(list1))) #[0, 33, 11, 44, 22, 55]
a = [list2.append(x) for x in list1 if x not in list2]
print(a) #[None, None, None, None, None, None]
print(list2) #[11, 22, 33, 44, 55, 0]
print("=======")
# 集合推导式,自带去重功能
# 例:计算列表中每个值的平方,自带去重功能
squared = {x**2 for x in [1, -1, 2]}
print(squared) #{1, 4}
# *******生成器表达式
num = ("==%s"%x for x in range(10))
print(num) #<generator object <genexpr> at 0x002FF090>
for i in num:
print(i)
g = (i*i for i in range(10))
print(g.__next__())