我是靠谱客的博主 包容小馒头,最近开发中收集的这篇文章主要介绍Python-推导式Python-推导式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Python-推导式

文章目录

  • Python-推导式
    • 前沿
    • 列表推导式
    • 元组推导式
    • 集合推导式
    • 字典推导式

前沿

Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

Python 支持各种数据结构的推导式:

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式
  • 元组(tuple)推导式

列表推导式

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式,使用列表生成式可以节省很多行代码
语法结构如下:

# 普通的生成式
[表达式 for 变量 in 旧列表]
# 加条件的生成式
[表达式 for 变量 in 旧列表 if 条件]
# if...else条件的生成式
[表达式 if 条件1 else 条件2 for 变量 in 旧列表]

过滤掉名词字母长度不足4的名字,示例代码如下:

names = ["Tom", "Lily", "Jack", "Steven", "Bod"]
# 在不是用列表生成式的过程
news_names = []
for name in names:
    if len(name) > 3:
        news_names.append(name)
print(news_names)  # ['Lily', 'Jack', 'Steven']


# 使用列表生成式
new_names = [name for name in names if len(name) > 3]
print(new_names)  # ['Lily', 'Jack', 'Steven']

将1-100的整数可以被3和5整除的数字组成一个新的列表, 示例代码如下所示:

# 旧方法
number_list = []
for i in range(101):
    if i % 3 == 0 and i % 5 == 0:
        number_list.append(i)
print(number_list)  # [0, 15, 30, 45, 60, 75, 90]
 
 
# 列表生成式
new_num_list = [i for i in range(101) if i % 3 == 0 and i % 5 == 0]
print(new_num_list)  # [0, 15, 30, 45, 60, 75, 90]

将0到10的奇数和0到5的偶数组成一个不重复的列表,示例代码如下所示:

# 将0到10的奇数和0到5的偶数组成一个不重复的列表
# 旧方法
news_number_list = []
for x in range(10):
    if x % 2 != 0:
        for y in range(5):
            if y % 2 == 0:
                news_number_list.append([x, y])
print(news_number_list)
# [[1, 0], [1, 2], [1, 4], [3, 0], [3, 2], [3, 4], [5, 0], [5, 2], [5, 4], [7, 0], [7, 2], [7, 4], [9, 0], [9, 2],[9, 4]]



# 新方法
news_num_list = [[x, y] for x in range(10) if x % 2 != 0 for y in range(6) if y % 2 == 0]
print(news_num_list)
# [[1, 0], [1, 2], [1, 4], [3, 0], [3, 2], [3, 4], [5, 0], [5, 2], [5, 4], [7, 0], [7, 2], [7, 4], [9, 0], [9, 2],[9, 4]]

将列表中的数字大于8000的加200 小于等于8000的加500,示例代码如下:

# 将列表中的数字大于8000的加200 小于等于8000的加500
number = [5000, 10000, 4500, 80000, 12000]
 
# 旧方法
for i in number:
    if i > 8000:
        i += 200
    else:
        i += 500
print(number)  #  [5500, 10200, 5000, 80200, 12200]
 
 
# 新方法
new_number = [i + 200 if i > 8000 else i + 500 for i in number]
print(new_number)  #  [5500, 10200, 5000, 80200, 12200]

元组推导式

和列表的用法一样,和列表不一样的是需要使用(),而且返回的是生成器对象,操作的时候需要转换一下

    tup = (x for x in range(1, 10)) # 返回的是生成器对象
    # (1, 2, 3, 4, 5, 6, 7, 8, 9)
    print(tuple(tup))  # 将生成器对象转换成元组

集合推导式

它们跟列表推导式也是类似的。 唯一的区别在于它们使用大括号{}

    squared = {x ** 2 for x in [1, 1, 2]}
    print(squared) # {1, 4}

字典推导式

字典推导和列表推导的使用方法是类似的。

    name = ['美琳', '梦洁', '雪丽', '美莲']
    age = [18, 19, 19, 18]
    a = {i: j for i, j in zip(name, age)}
    print(a) # {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}

在这里插入图片描述

点赞 -收藏-关注-便于以后复习和收到最新内容
有其他问题在评论区讨论-或者私信我-收到会在第一时间回复
在本博客学习的技术不得以任何方式直接或者间接的从事违反中华人民共和国法律,内容仅供学习、交流与参考
免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我、以迅速采取适当措施,避免给双方造成不必要的经济损失。
感谢,配合,希望我的努力对你有帮助^_^

最后

以上就是包容小馒头为你收集整理的Python-推导式Python-推导式的全部内容,希望文章能够帮你解决Python-推导式Python-推导式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部