Python列表推导式详情

 更新时间:2021年11月01日 15:44:20   作者:一碗周  
这篇文章主要介绍了Python列表推导式,列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式,下面来看看详细内容吧

1、列表生成式

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。

语法结构如下:

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

1.1 案例

过滤掉名词字母不足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整除的数字,组成一个新的列表.示例代码,示例代码如下所示:

# 将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]]

同样支持多个for语句,如果使用原来的那种方法的话层级结构太深了,使用生成式一行解决

将列表中的数字大于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)  # [5000, 10000, 4500, 80000, 12000]

# 新方法
new_number = [i + 200 if i > 8000 else i + 500 for i in number]
print(new_number)  # [5000, 10000, 4500, 80000, 12000]

2、集合生成式

语法结构如下所示:

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

语法结构与列表生成式基本相同,但是因为集合不允许有重复,所有得出的结果自动去重

3、字典生成式

字典生成式与集合生成式和列表生成式的语法结构一致,唯一不同的是字典是以键值对的形式存放信息的,如下例子中我们将dict中的键值互换,

示例代码如下:

# 将字典的键值对互换
dict1 = {"a": "A", "b": "B", "c": "C"}
# 就方法
new_dict1 = {}
for key, value in dict1.items():  # 返回一个存放键值对的元组
    new_dict1[value] = key
print(new_dict1)  # {'A': 'a', 'B': 'b', 'C': 'c'}

# 新方法
news_dict1 = {value: key for key, value in dict1.items()}
print(news_dict1)  # {'A': 'a', 'B': 'b', 'C': 'c'}


item方法:返回可遍历的(键, 值) 元组数组。

到此这篇关于Python列表推导式详情的文章就介绍到这了,更多相关Python列表推导式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python目标检测IOU的概念与示例

    python目标检测IOU的概念与示例

    这篇文章主要为大家介绍了python目标检测IOU的概念与示例实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Python中操作符重载用法分析

    Python中操作符重载用法分析

    这篇文章主要介绍了Python中操作符重载用法,较为详细的分析了Python操作符重载的功能,使用方法与相关注意事项,需要的朋友可以参考下
    2016-04-04
  • python下调用pytesseract识别某网站验证码的实现方法

    python下调用pytesseract识别某网站验证码的实现方法

    下面小编就为大家带来一篇python下调用pytesseract识别某网站验证码的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Pyramid将models.py文件的内容分布到多个文件的方法

    Pyramid将models.py文件的内容分布到多个文件的方法

    默认的Pyramid代码结构中,就只有一个models.py文件,在实际项目中,如果需要对models进行分类,放到不同文件下,应该怎么办
    2013-11-11
  • python3.8中关于sklearn问题(win10)

    python3.8中关于sklearn问题(win10)

    这篇文章主要介绍了python3.8中关于sklearn问题(win10),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • python计算N天之后日期的方法

    python计算N天之后日期的方法

    这篇文章主要介绍了python计算N天之后日期的方法,涉及Python操作日期的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • pytorch中常用的损失函数用法说明

    pytorch中常用的损失函数用法说明

    这篇文章主要介绍了pytorch中常用的损失函数用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • pygame实现贪吃蛇游戏(上)

    pygame实现贪吃蛇游戏(上)

    这篇文章主要为大家详细介绍了pygame实现贪吃蛇游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Python 3.8正式发布,来尝鲜这些新特性吧

    Python 3.8正式发布,来尝鲜这些新特性吧

    今天 Python3.8 发布啦,它是 Python2 终结前最后一个大版本,我们一起看看这个版本都添加了那些新功能和特性
    2019-10-10
  • 使用Pandas修改DataFrame中某一列的值

    使用Pandas修改DataFrame中某一列的值

    DataFrame是Pandas中的主要数据结构之一,下面这篇文章主要给大家介绍了关于使用Pandas修改DataFrame中某一列的值的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-12-12

最新评论