列表生成式和生成器表达式
#列表生成式 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__())