python初学一(列表、集合、字典推导式,又称为解析)

一、列表与集合推导式(解析):列表解析不是函数,区分lambda

     1、列表与集合推导式的语法: 

                            列表解析的结果是list,集合解析的结果是set,字典解析的结果是dict,后面两个是  {  }。

                     

        实例:

                 1、列表解析的理解: 列表解析可以在脑海中将其转化为for循环的式子。

   #   for循环控制循环次数,同时遍历出i的值,然后去做if条件判断,最后去计算表达式。
a = 0
list1 = [a for i in range(0,4) if i<4]
list2 = [i for i in range(0,4) if i<4]
print(list1)
print(list2)   # 

                   结果:

                      

      2、一个典型的例题:

                       

                     思考:由于元素乘积索引一一对应,因此可for寻找索引:

           代码:  

               

      3、列表解析是可以嵌套的:

                   列表解析除了可以使用多个for以外,还可以将上一层的遍历值作为下一层的迭代对象:

              

二、字典的推导式(字典解析):

      1、字典解析式的语法:

                

         实例:

                 

# 使用items()方法颠倒键名和值
dict2 = {'a': 10, 'b': 34}
dict3 = {v:k for k,v in dict2.items()}
print(dict3)    #{10: 'a', 34: 'b'}

2、系统函数enumerate():

list1 = ['a','c','b','b']
print(list(enumerate(list1)))  # enunmerate()结果是一个可迭代对象,用list转化
dict1 = {k:v for k,v in enumerate(list1)}   # 字典解析
print(dict1)
# 结果:
                [(0, 'a'), (1, 'c'), (2, 'b'), (3, 'b')]
                {0: 'a', 1: 'c', 2: 'b', 3: 'b'}

三、列表解析求较复杂的题目:

             题目:

          

            代码1:

                 

           代码2:

list1 = [i for i in range(100,1000) if i == (i%10)**3 + (i//10%10)**3 + (i // 100)**3]
print(list1)    # 列表解析,通过%与//取整数各个权位的数字。

猜你喜欢

转载自blog.csdn.net/qq_16555103/article/details/83792037