pythonday13


推导
隔行变色
三元操作符 运算符
为真时的结果
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:快速更换keyvalue
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)其中x0- 5 之间的偶数,y0- 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. m3, 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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值