列表推导式:
生成列表只要一行代码.以表达式的方式来快捷的生成一个列表数据的一种表达式(效率提高了,但是可读性变差了)
格式:[计算公式 for X in 可迭代对象 if 条件判断] 计算公式:一个取值规则而已
执行顺序:先执行 for X in 可迭代对象 部分,然后执行 if 条件判断 , 接着执行 计算公式取值部分,最后把取到的值丢到列表中,所以其返回值类型一定是个列表.
应用场景:对列表中的数据进行过滤(留下想要的数据,剔除不要的)
list1 = [(i+1) for i in range(1,101)] print(list1) # 执行顺序是: 1.for --> 2.if --> 3.i**2 list1 = [i ** 2 for i in range(1, 11) if i % 2 == 0] print(list1)
"""生成列表: 就是返回的列表中有10个'666'字符串 """ # 推导式不一定使用i,不一定使用range.灵活的很啊 list1 =['666' for i in range(10)] print(list1) list1 = ['zhangsan', 'lisi', 'wangwu'] list2 = [name for name in list1 if len(name) > 5] print(list2) # 递归就是死循环
字典推导式:
格式:{key:value for 循环 if 条件判断}
dict1 = {'name': 'zhangsan', 'age': 18} # key-value互换位置 dict2 = {dict1[key]:key for key in dict1} dict2 = {value: key for key, value in dict1.items()} print(dict2)
无序集合推导式:
格式:{计算公式 for 循环 if 条件判断}
list1 = ["1","2","3","3"] set1 = {int(s) for s in list1 if int(s) >=2} # {2,3}