当前位置:   article > 正文

Python--推导式_for row in range(len(im)):

for row in range(len(im)):
推导式是Python中很强大的,很受欢迎的特性,具有语言简洁,速度快等优点.

推导式包括:1.列表(list)推导式  2.字典(dict)推导式  3.集合(set)推导式

一、列表推导式

1、使用[]生成list

例:

<1>求整除3的数字列表

[python]   view plain  copy
  1. <span style="font-size:16px;">    
  2. numbers=[]  
  3. for x in range(100):  
  4.     if x%3==0:  
  5.        numbers.append(x)  
  6.     print(numbers)</span>  

使用推导来实现

[python]   view plain  copy
  1. <span style="font-size:16px;">    
  2. numbers=[x for x in range(100if x%3==0]  
  3. print(numbers)</span>  

执行命令得到

[python]   view plain  copy
  1. <span style="font-size:16px;">    
  2. .  
  3. .  
  4. .  
  5. [0369121518212427303336394245485154576063666972757881848790939699]  
  6. </span>  

<2> def是一个关键字 用来声明函数

        def声明函数的格式为

        def 函数名(参数1,参数2..参数n):

                函数体

求0-29之间三的倍数值得

[python]   view plain  copy
  1. <span style="font-size:16px;">    
  2. def squared(x):  
  3.     return x*x#返回值  
  4. multiples=[squared(i) for i in range(30if i % 3 is 0]  
  5. print(multiples)</span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. [093681144225324441576729]</span>  

2、使用()生成 generator将列表推导式的[]改成()即可得到生成器。

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. multiples=(i for i in range (30if i % 3 is 0)  
  3. print(type(multiples))</span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. <class 'generator'></span>  

二、字典推导式

字典推导和列表推导的使用方法是类似,只不过中括号改成了大括号.直接举例说明:

例:

<1>大小写key合并

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. mcase = {'a'10'b'34'A'7'Z'3}  
  3. mcase_frequency = {  
  4.     k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)  
  5.     for k in mcase.keys()  
  6.     if k.lower() in ['a','b']  
  7. }  
  8. print (mcase_frequency)</span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. {'a'17'b'34}</span>  

<2>快速更换key和value

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. mcase={'a':10,'b':34}  
  3. mcase_frequency={v:k for k,v in mcase.items()}  
  4. print(mcase_frequency)</span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. {10'a'34'b'}</span>  

三、集合推导

他跟列表推导式也是类似的,唯一的区别在于它使用的是花括号{}

例:

<1>求列表里的2次幂

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. squared={x**2 for x in [1,1,2]}  
  3. print(squared)</span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. {14}</span>  

<2>使用集合推导 字符串的长度的集合

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. strings=['a','is','with','if','file','exception']  
  3. set={len(s) for s in strings}#有长度相同的{}会只留一个[]多个,这在实际中也非常有用  
  4. print(set)</span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. {1249}</span>  

练习

<1>0-9的次方

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. squares=[]  
  3. for x in range(10):  
  4.  squares.append(x**2)  
  5. print(squares)  
  6. # 使用推导实现  
  7. squares=[x**2 for x in range(10)]  
  8. print(squares)</span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. [0149162536496481]</span>  

<2>将单词长度大于3的转为大写输出

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. names=['bob','tom','alice','jerry','wendy','smith']  
  3. print([name.upper() for name in names if len(name)>3])</span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. ['ALICE''JERRY''WENDY''SMITH']</span>  

<3>求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. num=[(x,y) for x in range(5if x%2==0 for y in range(5if y%2==1]  
  3. print(num)</span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. [(01), (03), (21), (23), (41), (43)]</span>  

<4>求m中3,6,9组成的列表

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. m=[[1,2,3],[4,5,6],[7,8,9]]  
  3. f=[row[2for row in m]  
  4. print(f)  
  5. # 或者  
  6. f=[m[row][2for row in (0,1,2)]  
  7. print(f)  
  8. </span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. [369]</span>  

<5>求m中1,5,9组成的列表

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. m=[[1,2,3],[4,5,6],[7,8,9]]  
  3. g=[m[i][i]for i in range(len(m))]  
  4. print(g)</span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. [159]</span>  

<6>求m,n中矩阵各个元素的乘积

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. m=[[1,2,3],[4,5,6],[7,8,9]]  
  3. n=[[2,2,2],[3,3,3],[4,4,4]]  
  4. f=[m[row][col]*n[row][col]for row in range(3for col in range(3)]  
  5. g=[[m[row][col]*n[row][col]for col in range(3)] for row in range(3)]  
  6. j=[[m[row][col]*n[row][col]for row in range(3)] for col in range(3)]  
  7. print(f)  
  8. print(g)  
  9. print(j)</span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. [246121518283236]  
  3. [[246], [121518], [283236]]  
  4. [[21228], [41532], [61836]]</span>  

<7>结合两个列表的元素,如果元素之间不相等的话生成列表

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. combs=[]  
  3. for x in [1,2,3]:  
  4.     for y in [3,1,4]:  
  5.         if x!=y:  
  6.             combs.append((x,y))  
  7. print(combs)  
  8. # 推导  
  9. combs=[(x,y)for x in [1,2,3]for y in [3,1,4if x!=y]  
  10. print(combs)</span>  
[python]   view plain  copy
  1. <span style="font-size:16px;">执行命令得</span>  
[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. [(13), (14), (23), (21), (24), (31), (34)]</span>  

<8>创建一个列表求2次幂形式如(number,square)

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. m=[(x,x**2for x in range(6)]  
  3. print(m)</span>  

执行命令得

[python]   view plain  copy
  1. <span style="font-size:16px;">   
  2. [(00), (11), (24), (39), (416), (525)]</span>  
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/207900
推荐阅读
相关标签
  

闽ICP备14008679号