推导
隔行变色
三元操作符 运算符
为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)
i= 1
if i== 1 :
print ( 'i==1' )
else :
print ( 'i!=1' )
r= True if i== 1 else False
print (r)
'''1.列表推导式
2.字典推导式
3.集合推导式'''
1. 列表推导式
例1:整除3的数字列表 0 - 100
num 调用函数
def squared(x):
return x* 2 ;
(q)
例3:使用()生成 generator
将列表推导式的[]改成()即可得到生成器。--yeild
q=(squared(y) for y in range ( 30 ) if y% 3 == 0 )
print ( type (q) )
print (q)
for i in q:
print (i)
print ( next (q))
print ( next (q))
二、字典推导式
字典推导和列表推导的使用方法是类似的,只不过中括号该改成大括号。
直接举例说明:
例1:快速更换key和value
mcase = { 'a' : 10 , 'b' : 34 }
for k,v in mcase.items():
print (k, v)
mk= { v:k for k,v in mcase.items()}
print (mk)
三、集合推导式
它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。
例一:
ssq={ squared(i) for i in range ( 5 ) if i> 2 }
print (ssq)
print ( type (ssq))
例1: 用集合推导 获取 字符串长度的集合
strings = [ 'a' , 'is' , 'with' , 'if' , 'file' , 'exception' ]
l={ len (s) for s in strings}
print (l)
练习 0 到9 的次方??????
def fang(x):
return x*x
l=[ fang(i) for i in range ( 10 ) ]
print (l)
1. 将单词长度大于3的转为大写输出
2. 求(x,y)其中x是0- 5 之间的偶数,y是0- 5 之间的奇数组成的元祖 列表
L=[]
for x in range ( 5 ):
if x% 2 == 0 :
for y in range ( 5 ):
if y% 2 == 1 :
L.append((x,y))
for x in range ( 5 ):
for y in range ( 5 ):
if y% 2 == 1 and x% 2 == 0 :
L.append((x,y))
print (L)
K=[ (x,y) for x in range ( 5 ) for y in range ( 5 ) if y% 2 == 1 and x% 2 == 0 ]
J=[ (x,y) for x in range ( 5 ) if x% 2 == 0 for y in range ( 5 ) if y% 2 == 1 ]
print (K)
print (J)
m = [[ 1 , 2 , 3 ],[ 4 , 5 , 6 ],[ 7 , 8 , 9 ]]
3. 求m中3, 6 , 9 组成的列表
L= [ z[ 2 ] for z in m ]
print (L)
4 m 中1 5 9
L= [ m[i][i] for i in range ( len (m))]
print (L)
5. 求m,n中矩阵各个元素的乘积
m = [[ 1 , 2 , 3 ],[ 4 , 5 , 6 ],[ 7 , 8 , 9 ]]
n = [[ 2 , 2 , 2 ],[ 4 , 4 , 4 ],[ 7 , 7 , 7 ]]
L=[ m[i][j]* n[i][j] for i in range ( len (m)) for j in range ( len (m[i])) ]
P=[[m[i][j]* n[i][j] for j in range ( len (m[i]))] for i in range ( len (m))]
O= [[m[i][j]*n[i][j] for i in range ( 3 )] for j in range ( 3 )]
for j in range ( 3 ):
for i in range ( 3 ):
m[i][j]*n[i][j]
print (L)
print (P)
print (O)
6. 结合两个列表的元素,如果元素之间不相等的话
L=[(m[i][j],n[i][j]) for i in range ( 3 ) for j in range ( 3 )
if m[i][j]!=n[i][j]]
print (L)
7 提 --> 3 位数
a=[ 1 , 2 , 3 , 4 ]
b=[ 1 2 3 4 ]
c=[ 1 2 3 4 ]
L= [ i* 100 +j* 10 +k for i in a for j in a for k in a
if i!=j and i !=k and j!=k
]
print (L)
Li=[[ 1 , 2 , 3 , 4 ],
[ 2 , 4 , 6 , 8 ],
[ 3 , 5 , 7 , 9 ]]
L=[ [Li[j][i] for j in range ( 3 )] for i in range ( 4 ) ]
print (L)
三元操作符 运算符
为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)
i= 1
if i== 1 :
print ( 'i==1' )
else :
print ( 'i!=1' )
r= True if i== 1 else False
print (r)
'''1.列表推导式
2.字典推导式
3.集合推导式'''
1. 列表推导式
例1:整除3的数字列表 0 - 100
num 调用函数
def squared(x):
return x* 2 ;
(q)
例3:使用()生成 generator
将列表推导式的[]改成()即可得到生成器。--yeild
q=(squared(y) for y in range ( 30 ) if y% 3 == 0 )
print ( type (q) )
print (q)
for i in q:
print (i)
print ( next (q))
print ( next (q))
二、字典推导式
字典推导和列表推导的使用方法是类似的,只不过中括号该改成大括号。
直接举例说明:
例1:快速更换key和value
mcase = { 'a' : 10 , 'b' : 34 }
for k,v in mcase.items():
print (k, v)
mk= { v:k for k,v in mcase.items()}
print (mk)
三、集合推导式
它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。
例一:
ssq={ squared(i) for i in range ( 5 ) if i> 2 }
print (ssq)
print ( type (ssq))
例1: 用集合推导 获取 字符串长度的集合
strings = [ 'a' , 'is' , 'with' , 'if' , 'file' , 'exception' ]
l={ len (s) for s in strings}
print (l)
练习 0 到9 的次方??????
def fang(x):
return x*x
l=[ fang(i) for i in range ( 10 ) ]
print (l)
1. 将单词长度大于3的转为大写输出
2. 求(x,y)其中x是0- 5 之间的偶数,y是0- 5 之间的奇数组成的元祖 列表
L=[]
for x in range ( 5 ):
if x% 2 == 0 :
for y in range ( 5 ):
if y% 2 == 1 :
L.append((x,y))
for x in range ( 5 ):
for y in range ( 5 ):
if y% 2 == 1 and x% 2 == 0 :
L.append((x,y))
print (L)
K=[ (x,y) for x in range ( 5 ) for y in range ( 5 ) if y% 2 == 1 and x% 2 == 0 ]
J=[ (x,y) for x in range ( 5 ) if x% 2 == 0 for y in range ( 5 ) if y% 2 == 1 ]
print (K)
print (J)
m = [[ 1 , 2 , 3 ],[ 4 , 5 , 6 ],[ 7 , 8 , 9 ]]
3. 求m中3, 6 , 9 组成的列表
L= [ z[ 2 ] for z in m ]
print (L)
4 m 中1 5 9
L= [ m[i][i] for i in range ( len (m))]
print (L)
5. 求m,n中矩阵各个元素的乘积
m = [[ 1 , 2 , 3 ],[ 4 , 5 , 6 ],[ 7 , 8 , 9 ]]
n = [[ 2 , 2 , 2 ],[ 4 , 4 , 4 ],[ 7 , 7 , 7 ]]
L=[ m[i][j]* n[i][j] for i in range ( len (m)) for j in range ( len (m[i])) ]
P=[[m[i][j]* n[i][j] for j in range ( len (m[i]))] for i in range ( len (m))]
O= [[m[i][j]*n[i][j] for i in range ( 3 )] for j in range ( 3 )]
for j in range ( 3 ):
for i in range ( 3 ):
m[i][j]*n[i][j]
print (L)
print (P)
print (O)
6. 结合两个列表的元素,如果元素之间不相等的话
L=[(m[i][j],n[i][j]) for i in range ( 3 ) for j in range ( 3 )
if m[i][j]!=n[i][j]]
print (L)
7 提 --> 3 位数
a=[ 1 , 2 , 3 , 4 ]
b=[ 1 2 3 4 ]
c=[ 1 2 3 4 ]
L= [ i* 100 +j* 10 +k for i in a for j in a for k in a
if i!=j and i !=k and j!=k
]
print (L)
Li=[[ 1 , 2 , 3 , 4 ],
[ 2 , 4 , 6 , 8 ],
[ 3 , 5 , 7 , 9 ]]
L=[ [Li[j][i] for j in range ( 3 )] for i in range ( 4 ) ]
print (L)