Fork me on GitHub

推导式试题

#(1).{'x': 'A', 'y': 'B', 'z': 'C' } 把字典写成x=A,y=B,z=C的列表推导式
dic = {'x': 'A', 'y': 'B', 'z': 'C' }
# for  a,b in dic.items():
	# print(a,b)
res = [a+"="+b for a,b in dic.items() ]
print(res)

# (2).把列表中所有字符变成小写  ["ADDD","dddDD","DDaa","sss"]
lst = ["ADDD","dddDD","DDaa","sss"]
res = [i.lower() for i in  lst ]
print(res)

# (3).x是0-5之间的偶数,y是0-5之间的奇数 把x,y组成一起变成元组,放到列表当中
# (0 2 4 )
# (1 3 5)
# (0 1) (0 3) (0 5)
# (2 1) (2 3) (2 5)
# (4 1) (4 3) (4 5)
lst_new = []

for i in range(0,6):
	if i % 2 == 0:
		for j in range(0,6):
			if j % 2 == 1:
				lst_new.append( (i,j) )

print(lst_new)

# 写法一
res = [(i,j) for i in range(0,6) if i % 2 == 0 for j in range(0,6) if j % 2 == 1  ]
print(res)
lst_new2 = []
for i in range(0,6):
	for j in range(0,6):
		if i % 2==0 and j %2 ==1:
			lst_new2.append( (i,j) )
print(lst_new2)


# 写法二
res = [(i,j) for  i in range(0,6) for j  in range(0,6) if i % 2 == 0 and j % 2 == 1 ]
print(res)



# (4).使用列表推导式 制作所有99乘法表中的运算
for i in range(1,10):
	for j in range(1,i+1):
		# print("%d*%d=%2d " % (i,j,i*j))
		print("{:d} * {:d} = {:2d} ".format(i,j,i*j) ,end="")
		
	print()

# 写法一
res = ["{:d} * {:d} = {:2d} ".format(i,j,i*j) for i in range(1,10) for j in range(1,i+1)]
print(res)

for i in range(9,0,-1):
	for j in range(1,i+1):
		# print("%d*%d=%2d " % (i,j,i*j))
		print("{:d} * {:d} = {:2d} ".format(i,j,i*j) ,end="")
		
	print()	
# 写法二
res = ["{:d} * {:d} = {:2d} ".format(i,j,i*j) for i in range(9,0,-1) for j in range(1,i+1)]
print(res)

'''
(5)#求M,N中矩阵和元素的乘积
# M = [ [1,2,3], 
#       [4,5,6], 
#       [7,8,9]  ] 

# N = [ [2,2,2], 
#       [3,3,3], 
#       [4,4,4]  ] 
=>实现效果1   [2, 4, 6, 12, 15, 18, 28, 32, 36]
=>实现效果2   [[2, 4, 6], [12, 15, 18], [28, 32, 36]]
'''
M = [[1,2,3],[4,5,6],[7,8,9]]
N = [[2,2,2],[3,3,3],[4,4,4]]

# M[0][0] * N[0][0] = 2
# M[0][1] * N[0][1] = 4
# M[0][2] * N[0][2] = 6


# M[1][0] * N[1][0] = 12
# M[1][1] * N[1][1] = 15
# M[1][2] * N[1][2] = 18


# M[2][0] * N[2][0] = 28
# M[2][1] * N[2][1] = 32
# M[2][2] * N[2][2] = 36

# 效果1  # i=> 0 1 2  j=> 0 1 2 i动的慢 j动的块
res = [M[i][j] * N[i][j] for i in range(3) for j in range(3) ]
print(res) #[2, 4, 6, 12, 15, 18, 28, 32, 36]

#=>实现效果2   [    [2, 4, 6], [12, 15, 18], [28, 32, 36]    ]

# [] [] [] 
'''
第一步遍历三个空列表
[ []  for i in range(3)  ]
第二部在空列表里面在写一个推导式遍历对应的元素
[M[i][j] * N[i][j]  for j in range(3)]
'''
res = [   [M[i][j] * N[i][j]  for j in range(3)]  for i in range(3)   ]
print(res) #[[2,4,6], [], []]

  

posted @ 2019-05-22 19:21  MR_黄Python之路  阅读(272)  评论(0编辑  收藏  举报