推导式
列表推导式
-
用[]生成的列表,基本格式:variable = [out_exp_res for out_exp in input_list if out_exp == 2]。
-
遍历字符串
-
mystr = "Hello world" ret = [i for i in mystr] # ret = [i for i in mystr if i.islower()] 过滤出mystr中的小写字母 print(ret, type(ret))
-
[‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ’ ', ‘w’, ‘o’, ‘r’, ‘l’, ‘d’] <class ‘list’>
-
-
打印30以内被3整除的数
-
mysum = [i for i in range(0,31,3) if i%3==0] print(mysum)
-
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
-
-
列表推导式嵌套过滤出有两个e的名字
-
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'], ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']] mynames = [j for i in range(2) for j in names[i] if j.upper().count('E')==2] print(mynames)
-
[‘Jefferson’, ‘Wesley’, ‘Steven’, ‘Jennifer’]
-
-
条件判断,打印20以内能被3整除的数如果不是的话去相反数
-
q = [x if x%3==0 else -x for x in range(1,20)] print(q)
-
[-1, -2, 3, -4, -5, 6, -7, -8, 9, -10, -11, 12, -13, -14, 15, -16, -17, 18, -19]
-
-
字典推导式
-
过滤掉key中含有‘a’的键值对:
-
dic = {'a':1, 'b':2, 'c':3, 'ab':4} mydic = {i:dic[i] for i in dic if 'a' not in i} print(mydic)
-
{‘b’: 2, ‘c’: 3}
-
-
交换键值对
-
q={'a':10,'b':34} my_di = {q[key]:key for key in q} print(my_di)
-
{10: ‘a’, 34: ‘b’}
-
-
将同一种字母的value相加
-
q4={'B':3, 'a':1,'b':6, 'c':3, 'A':4} my_di2 = {key.lower():q4.get(key.lower(),0)+q4.get(key.isupper(),0) for key in q4} print(my_di2)
-
{‘b’: 6, ‘a’: 1, ‘c’: 3}
-
集合推导式
- 也具备集合的去重功能: