******
20230308~20230309
******
# Python 推导式
# Python 支持各种数据结构的推导式 : 列表(list)推导式,字典(dict)推导式,集合(set)推导式,元组(tuple)推导式
# *****************************************************************************************
# 列表推导式
# 例子:计算 10 以内可以被 2 整除的整数
intNum = [i for i in range(0,10) if i % 2 == 0]
print(intNum)
print(type(intNum)) # 打印查看数据类型结构
'''
intNum1 = []
for i in range(10):
if i % 2 == 0:
intNum1.append(i)
print(intNum1)
'''
# *****************************************************************************************
# 字典推导式
# 例子1:提供六个数字,以六个数字为键,六个数字的平方为值来创建字典
dic = {key:key**2 for key in (1, 2, 3, 4, 5, 6)}
print(dic)
print(type(dic)) # 打印查看数据类型结构
# dic0 = {i:j**2 for i,j in zip(range(1,7),range(1,7))}
# print(dic0)
'''
lis = [1,2,3,4,5,6]
lis1 = []
for lisT in lis:
lis1.append(lisT**2)
dic1 = dict(zip(lis,lis1)) # 该功能结果与例子1字典推导式一样
print(dic1)
'''
# 例子2:使用字符串及其长度创建字典
liststr = ['Bai du','Touyin','Aiqiyi'] # 将列表中各字符串值为键,各字符串的长度为值,组成键值对
newdic = {key:len(key) for key in liststr}
print(newdic)
print(type(newdic)) # 打印查看数据类型结构
'''
liststr = ['Bai du','Touyin','Aiqiyi']
liststr2 = []
for lisS in liststr:
liststr2.append(len(lisS))
dic2 = dict(zip(liststr,liststr2)) # 该功能结果与例子2字典推导式一样
print(dic2)
# ******
liststr = ['Bai du','Touyin','Aiqiyi']
nd = {}
for i in liststr:
nd[i] = len(i) # 该功能结果与例子2字典推导式一样
print(nd)
'''
# *****************************************************************************************
# 集合推导式
# 例子1:计算数字 1,2,3 的平方数
setnew = {i**2 for i in range(1,4)}
print(setnew)
print(type(setnew)) # 打印查看数据类型结构
'''
listNum = [1,2,3]
listNum1 = []
empty_set = set() # 创建一个空集合必须用 set() 而不是 { }
for i in listNum:
listNum1.append(i**2)
empty_set.update(listNum1) # update()括号中的参数可以是列表,元组,字典
print(empty_set)
'''
# 例子2:判断不是 abc 的字母并输出
a = {x for x in 'abeacsbcy' if x not in 'abc'}
print(a)
print(type(a))
'''
a2 = set() # 创建一个空集合必须用 set() 而不是 { }
for i in 'abeacsbcy':
if i not in 'abc':
a2.update(i)
print(a2)
'''
# *****************************************************************************************
# 元组推导式(生成器表达式)
# 例子:生成一个包含数字 1~9 的元组
a = (x for x in range(1,10))
print(a) # 返回的是生成器对象
b = tuple(a) # 使用 tuple() 函数,可以直接将生成器对象转换成元组
print(b)
#a1 = tuple((x for x in range(1,10)))
#print(a1)