赞
踩
Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
Python 支持各种数据结构的推导式:列表(list)推导式、字典(dict)推导式、集合(set)推导式、元组(tuple)推导式。
(1)
语法格式
[a].
常规的形式:[表达式 for 变量 in 序列]
。
[b].
加if条件的形式:[表达式 for 变量 in 序列 if 条件]
。
解析:
表达式
: 列表生成元素表达式,可以是有返回值
的函数。
for 变量 in 序列
: 迭代 列表 将 变量 传入到 表达式 当中去。
if 条件
: 可以过滤列表中不符合条件的值。
序列
:实际上序列可以是合法的list, tuple, set, dict, str
。
(2)
示例代码
# 代码1
def toUpper(str):
if(len(str) != 0):
# str.upper() # 没有返回, 得不到预期的结果
return str.upper() # 必须是返回值
# 注意, 函数中必须是返回结果, 不能是简单的str.upper(), 否则返回[None, None,,,]
list= ['Bob', 'Tom', 'alice', 'Jerry', 'Wendy', 'Smith']
new_list= [toUpper(name) for name in list]
print(new_list)
# 代码2
# 过滤掉长度小于或等于3的字符串列表,并将剩下字符串的转换成大写字母
list= ['Bob', 'Tom', 'alice', 'Jerry', 'Wendy', 'Smith']
new_list= [name.upper() for name in list if len(name)>3]
print(new_list)
详细解释:
# 代码3
# 将上述中序列从list更换为tuple
t = ('Bob', 'Tom', 'alice', 'Jerry', 'Wendy', 'Smith')
new_list= [name.upper() for name in t if len(name) > 3]
print(new_list)
# 将序列更换为set
set = {'Bob', 'Tom', 'alice', 'Jerry', 'Wendy', 'Smith'}
new_list= [name.upper() for name in set if len(name) > 3]
print(new_list)
# 将序列更换为dict
dict= {'num': 101, 'name': 'zhang', 'age': 18, 'hobby': 'eat'}
new_list = [dict[key] for key in dict if key == 'name']
print(new_list)
# 将序列更换为str
string= 'HelloWorld'
new_list= [ch.upper() for ch in string if ch.islower()]
print(new_list)
(1)
语法格式
[a].
常规的形式:{变量(key):value for 变量 in 序列}
。
[b].
加if条件的形式:{变量(key):value for 变量 in 序列 if 条件}
。
具体解析可参考list推导式,此处不再赘述。
# 代码1
# 使用字符串及其长度创建字典
listDemo= ["Google", "BaiDu", "TaoBao", "JingDong"]
Dict= {name:len(name) for name in listDemo}
print(Dict)
# 代码2, 将上述中的list序列更换为tuple序列
tuple= ("Google", "BaiDu", "TaoBao", "JingDong")
Dict= {name:len(name) for name in tuple}
print(Dict)
(1)
语法格式
[a].
常规的形式:{表达式 for 变量 in 序列}
。
[b].
加if条件的形式:{表达式 for 变量 in 序列 if 条件}
。
具体解析可参考list推导式,此处不再赘述。
# 从给定的字符串中筛选出字符不在'abc'中的并将其组合成新的集合
string= "abcdefg"
s1= {ch for ch in string if ch not in "abc"}
print(s1, type(s1))
(1)
语法格式
[a].
常规的形式:(表达式 for 变量 in 序列)
。
[b].
加if条件的形式:(表达式 for 变量 in 序列 if 条件)
。
[c].
元组推导式返回的结果是一个生成器对象。
t= (item for item in ['aaa', 'bbb', 'ccc', 'ddd'])
print(t) # 返回的是一个生成器对象
print(tuple(t)) # 使用tuple()函数, 可以将生成器对象转换为元组
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。