Fork me on GitHub

推导式

# ### 推导式
'''
通过一行循环判断,遍历出一系列数据的方式就是推导式
特点:方便,简介,可以实现一些简单的功能
推导式当中只能跟循环和判断(单项分支)

种类中分为三种: 列表推导式,集合推导式,字典推导式
[val  for val in  iterable]
{val  for val in  iterable}
{a:b  for a,b in iterable} 
'''

# (1)基本语法
# [1,2,3,4]  => [2,4,6,8]
lst = [1,2,3,4]
lst2 = []
for i in lst:
	res = i * 2
	lst2.append(res)
print(lst2)


res = [i for i in range(1,5)]
# 改写
res = [i * 2 for i in range(1,5)]
print(res)

# [1,2,3,4]  => [2,8,24,64]
'''
1-> 2   乘以2的1次幂
2-> 8   乘以2的2次幂
3 -> 24 乘以2的3次幂
4 -> 64 乘以2的4次幂
'''
# 把想要的值 写在for的左侧
res = [i << i for i in range(1,5)] # 1 << 1  2 << 2 3 << 3 4<<4
print(res)

# (2)带有条件判断的推导式
lst = [1,2,3,4,5,6,67,7,8,98,9]
lst2 = []
for i in lst:
	if i % 2 == 0:
		lst2.append(i)
print(lst2)

# 推导式写法
res = [i for i in lst if i %2 == 0]
print(res)


# (3)多循环推导式
lst1 = ["邓远文","舒畅","易思","仿真枪"]
lst2 = ["张国成","王博","邱玉龙","苏传红"]
lst = []
for  i  in  lst1:
	for j in lst2:
		res = i + '♥♥♥' +j
		lst.append(res)
print(lst)
# "谁 ♥♥♥ 谁"

res = [i+'♥♥♥'+j for i in lst1 for j in lst2 ]
print(res)


# (4)带有判断条件的多循环推导式
lst1 = ["邓远文","舒畅","易思","仿真枪"]
lst2 = ["张国成","王博","邱玉龙","苏传红"]
lst_new = []
for i in lst1:
	for j in lst2:
		if lst1.index(i) == lst2.index(j):
			strvar = i+'♥♥♥'+j
			lst_new.append(strvar)

print(lst_new)

res = [i+'♥♥♥'+j for i in lst1 for j in lst2  if lst1.index(i) == lst2.index(j)]
print(res)

  

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