python笔记09推导式(解析式)

    科技2025-07-12  12

    python笔记09推导式(解析式)

    先声明一下 各位大佬,这是我的笔记。 如有错误,恳请指正。 另外,感谢您的观看,谢谢啦!

    (1).列表推导式

    先从一个问题开始,要生成如下list要怎么作,

    [0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5]

    最简单的肯定是for循环,但这个问题是要求一句代码搞定

    这是我一开始想到的办法

    print(list(filter(lambda x: x+0.5 ,range(11))))

    我犯了一个错误,filter只是过滤而已,虽然第一个函数参数改变了x的值,但是x只是用来判断的,真正输出的还是迭代对象里的值。

    所以这题的答案就是用列表推导式来解决

    li1 = [i/2 for i in range(1,20)] print(li1) [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5]

    (补充说明)

    我在写完这篇笔记的第二天,复习笔记的时候又想到了一种新方法

    print(list(map(lambda x :x+0.5,range(11)))) [0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5]

    好,很有精神!

    (补充说明结束)

    下一个问题,将li2里的负数平方并生成新的list

    li2 = [1,2,3,-1,-2,-3] print([i**2 for i in li2 if i<0]) [1, 4, 9]

    推导式非常灵活,里面还可以用for嵌套

    print([i+j for i in '123' for j in 'abc']) ['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']

    (2).字典推导式和集合推导式

    写法格式和上面的列表推导式都是一样的

    li1 = ['one','two','three'] dic1 = {li1.index(i):i for i in li1} print(dic1) {0: 'one', 1: 'two', 2: 'three'} s1 = {i for i in range(10)} print(s1) {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    Processed: 0.018, SQL: 8