二.python面对对象-------7 推导式

         推导式是python中很强大的 很受受欢迎的,具有语言简洁,速度快等优点。推导式包括:

1.列表推导式

2.字典推到书

3.集合推导式

#1到10的平方的列表


列表推导式

列1:整除3的数字列表

列表推导式numbers = []
for x in range(100):
    if x % 3 == 0:
        numbers.append(x*x)
print(numbers)

# nums=(推导)   生成器 此时并没有执行 创建了一个生成器
def squared(x):
    return x*x
num=[squared(x) for x in range(100) if x%3==0]
num1=[squared(x) for x in range(100) if x%3==0]
print(type(nums))  #yied
print(nums)
print(nums1)
print([y for y in nums])


字典推导式
字典推导和列表推导的使用方法是类似的,只不过中括号该改成大括号。直接举例说明:
快速更换key 和 velue
mcase = {'a':10,'b':34}
 new_m={v:k for k,v in mcase.items()}
new_m={}
for k,v in mcase.items():
    new_m[v]=k
new_m= {v:k for k,v in mcase.items()}
print(new_m)


集合推导式
它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。
set1= {x**2 for x in (1,2,3,4)}
print(set1)


例子:快速更换key和value

mcase = {'a': 10, 'b': 34}
mcase_frequency = {v: k for k, v in mcase.items()}
print mcase_frequency
#  Output: {10: 'a', 34: 'b'}

 

练习1:

用集合推导 字符串长度的集合

 strings = ['a','is','with','if','file','exception']
 lens = [s.upper() for s in strings if len(s)>3]
 print(lens)


练习2:

 0到9 的次方

 print([x**2 for x in range(10)])



练习3:

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

L=[]
for x in range(6):
    if x%2==0:
        for y in range(6):
            if y%2==1:
                L.append((x,y))
print(L)
LL=[(x,y) for x in range(6) if x%2==0 for y in range(6) if y%2==1]
print(LL)


练习4:

求m中3,6,9组成的列表:

m = [[1,2,3],[4,5,6],[7,8,9]]

print([x[0] for x in m])


练习5:

求m 中斜线1,5,9组成的列表:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

[m[i][i] for i in range(len(m))]



练习6:

求m,n中矩阵各个元素的乘积:

m= [[1,2,3],[4,5,6,],[7,8,9]]
n= [[2,2,2],[3,3,3],[4,4,4]]
# 通过元素下标 获取各个数据
for i in range(len(m)):
    for j in range(len(m[i])):
        print(m[i][j]*n[i][j],end=' ')
s=[m[i][j]*n[i][j] for i in range(len(m)) for j in range(len(m[i]))]
print(s)
s=[ [m[row][col]*n[row][col] for col in range(len(m[row]))] for row in range(len(m))]
s1=[ [m[i][j]*n[i][j] for j in range(len(m[i]))] for i in range(len(m))]
s2=[ [m[i][j]*n[i][j] for i in range(len(m[j]))] for j in range(len(m))]
print(s)
print(s1)
print(s2)


练习7:

结合两个列表的元素,如果元素之间不相等的话:

a=[1,2,3]
b=[3,1,4]
c=[2,5,4]
for i in a:
    for j in b:
        for j in b:
            for k in c:
                if i!=j and j!=k and i!=k:
                    print((i,j,k),end=' ')
print()
print( [(i,j,k) for i in a for j in b  for k in c if i!=j and j!=k and i!=k ])


练习7:
 create a list of 2-tuples like (number, square)
 print([ (x,x**2) for x in range(6)])

 将csv文件读取为字典列表:
import csv
Dict=csv.DictReader(open('随手.csv','rU'))
# print(type(Dict))
# print(dir(Dict))
# print(Dict)
ds=[]
# for d in Dict:
#     for c in d.values():
#         print(c)
     # ds.append(d)
         #ds.append(d)
print(ds)
print([d.values()] for d in Dict )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值