当前位置:   article > 正文

13. python推导式详解_python 推导式

python 推导式

Python推导式讲解

Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
Python 支持各种数据结构的推导式:列表(list)推导式、字典(dict)推导式、集合(set)推导式、元组(tuple)推导式。

1. list推导式

(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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述


# 代码2
# 过滤掉长度小于或等于3的字符串列表,并将剩下字符串的转换成大写字母
list= ['Bob', 'Tom', 'alice', 'Jerry', 'Wendy', 'Smith']
new_list= [name.upper() for name in list if len(name)>3]
print(new_list)
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
详细解释:
在这里插入图片描述


# 代码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)
  • 1
  • 2
  • 3
  • 4
  • 5
# 将序列更换为set
set = {'Bob', 'Tom', 'alice', 'Jerry', 'Wendy', 'Smith'}
new_list= [name.upper() for name in set if len(name) > 3]
print(new_list)
  • 1
  • 2
  • 3
  • 4
# 将序列更换为dict
dict= {'num': 101, 'name': 'zhang', 'age': 18, 'hobby': 'eat'}
new_list = [dict[key] for key in dict if key == 'name']
print(new_list)
  • 1
  • 2
  • 3
  • 4
# 将序列更换为str
string= 'HelloWorld'
new_list= [ch.upper() for ch in string if ch.islower()]
print(new_list)
  • 1
  • 2
  • 3
  • 4

3. dict推导式

(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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

4. set推导式

(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
  • 2
  • 3
  • 4

在这里插入图片描述

5. tuple推导式

(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()函数, 可以将生成器对象转换为元组
  • 1
  • 2
  • 3

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/207887
推荐阅读
相关标签
  

闽ICP备14008679号