Python 中的列表推导式

这篇具有很好参考价值的文章主要介绍了Python 中的列表推导式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

列表推导式是一种 Python 构造,可减少生成新列表或过滤现有列表所需的代码行。列表推导式包含在方括号内,它由一个表达式、一个或多个 for 循环和一个用于过滤生成的列表的可选条件组成。

列表推导式使用以下语法:

new_list = [expression(item) for item in iterable if condition]

翻译翻译就是:

new_list = []
for item in iterable:
    if condition:
        new_list.append(expression(item))

简单用法

最原始的1到10

numbers = [x for x in range(1,11)]
print(numbers)
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

乘个2

numbers = [2*x for x in range(1,11)]
print(numbers)
>>> [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

只要偶数

numbers = [x for x in range(1,11) if x%2==0]
print(numbers)
>>> [2, 4, 6, 8, 10]

来个等差数列

numbers = [2*x-1 for x in range(1,11)]
print(numbers)
>>> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

来个二维数组

numbers = [[x, x**2] for x in range(2,7)]
print(numbers)
>>> [[2, 4], [3, 9], [4, 16], [5, 25], [6, 36]]

添加多个条件

只要一个范围内

numbers = [2*x for x in range(1,11) if x>2 and x<5]
print(numbers)
>>> [6, 8]

要添加 else 条件,我们必须重新排列列表理解元素的顺序。一个三元表达式的顺序
我们必须将条件移动到 for 关键字之前,以便在不满足 if 条件时返回一个不同于 2*x 的值。

# 如果 x 的值介于2和5之间,则列表推导式返回 2*x,否则返回 3*x。
numbers = [2*x if x > 2 and x < 5 else 3*x for x in range(10)]
print(numbers)
>>> [0, 3, 6, 6, 8, 15, 18, 21, 24, 27]

如果条件在多一点

numbers = []
for x in range(10):
    if x > 2 and x < 5:
        numbers.append(2*x)
    elif x <=2:
        numbers.append(3*x)
    else:
        numbers.append(4*x)
print(numbers)
>>> [0, 3, 6, 6, 8, 20, 24, 28, 32, 36]
numbers = [2*x if x > 2 and x < 5 else 3*x if x <=2 else 4*x for x in range(10)]
print(numbers)
>>> [0, 3, 6, 6, 8, 20, 24, 28, 32, 36]

多个列表使用

与 zip 函数一起使用的列表推导返回一个元组列表,其中第 n 个元组包含每个列表的第 n 个元素。

cities = ['Rome', 'Warsaw', 'London']
countries = ['Italy', 'Poland', 'United Kingdom']
abc = [(city, country) for city, country in zip(cities, countries)]
print(abc)
>>> [('Rome', 'Italy'), ('Warsaw', 'Poland'), ('London', 'United Kingdom')]
cities = ['Rome', 'Warsaw', 'London']
countries = ['Italy', 'Poland', 'United Kingdom']
languages = ['Italian', 'Polish', 'English']
abc = [(city, country, language) for city, country, language in zip(cities, countries, languages)]
print(abc)
>>> [('Rome', 'Italy', 'Italian'), ('Warsaw', 'Poland', 'Polish'), ('London', 'United Kingdom', 'English')]

下面演示了两种不同的加法。挨个加一遍,,对应加,,

a = [2, 3, 4, 5]
b = [12, 13, 14, 15]
abc = [x+y for x in a for y in b]
print(abc)
>>> [14, 15, 16, 17, 15, 16, 17, 18, 16, 17, 18, 19, 17, 18, 19, 20]
a = [2, 3, 4, 5]
b = [12, 13, 14, 15]
abc = [x+y for x,y in zip(a,b)]
print(abc)
>>> [14, 16, 18, 20]

三个也是一样的

a = [2, 3]
b = [12, 13]
c = [22, 23]
abc = [x+y+z for x in a for y in b for z in c]
print(abc)
>>> [36, 37, 37, 38, 37, 38, 38, 39]
a = [2, 3, 4, 5]
b = [12, 13, 14, 15]
c = [22, 23, 24, 25]
abc = [x+y+z for x,y,z in zip(a,b,c)]
print(abc)
>>> [36, 39, 42, 45]

替换 Reduce 和 Lambda

reduce 函数返回总和

from functools import reduce
numbers = [3, 6, 8, 23]
print(reduce(lambda a,b: a+b, numbers))
>>> 40

修改一下

print(sum([number for number in numbers]))
>>> 40

嵌套列表推导式

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
    for item in row:
        item  *= 2
print(matrix)
>>> [[2, 4, 6], [8, 10, 12], [14, 16, 18]]

简单地来个转换文章来源地址https://www.toymoban.com/news/detail-740367.html

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matrix = [[item*2 for item in row] for row in matrix]
print(matrix)
>>> [[2, 4, 6], [8, 10, 12], [14, 16, 18]]

到了这里,关于Python 中的列表推导式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 程序设计入门(008)—— 列表的操作(3):列表推导式

    使用列表推导式可以快速生成一个列表。或者根据某个列表生成满足指定需求的列表。列表推导式包含在方括号内,它由一个表达式、一个或多个 for 循环和一个用于过滤生成的列表的可选条件组成。 列表推导式的语法格式如下: 说明: (1)Expressinon:表达式,用于计算列

    2024年02月14日
    浏览(52)
  • Python列表差异值统计:集合操作、列表推导式、对称差集详解

      在Python中,统计两个列表的差异值有多种方法,其中包括使用集合操作、列表推导式等。下面我将通过实例详细讲解几种常见的方法,并提供相应的实例源代码。 这些方法各有优缺点,选择使用哪一种取决于你的具体需求和性能考虑。方法一和方法三使用了集合操作,可能

    2024年02月01日
    浏览(85)
  • python经典有序序列的list列表推导式

    生成一个数据列表 使用列表推导式生成该数据列表 分析: 1、使用一行代码的列表推导式就完成了该列表的生成 2、[i for i in range(20)],第一个i元素代表向列表list_2中添加的元素 3、[i for i in range(20)],第二个i元素代表for循环遍历的i元素 使用列表推导式生成只有偶数的数据列

    2024年02月02日
    浏览(60)
  • Python 列表推导式(List Comprehension)的使用

    样例代码: 输出如下: 源码解释: 在给定函数 func(g, arr) 中,表达式 [g(x) for x in arr] 是列表推导式(List Comprehension)的一种写法。它的作用是将函数 g 应用于列表 arr 中的每个元素 x ,并将结果存储在一个新的列表中。 解释 [g(x) for x in arr] 的过程如下: 对于列表 arr 中的每

    2024年02月12日
    浏览(41)
  • Python 列表推导式:简洁、高效的数据操作艺术

    Python 的列表推导式,这个看似简单的语法糖,实则内含无限威力。在 Python 代码编写中,列表推导式的灵活性和简洁性让它成为了不可或缺的一部分。在这篇文章中,我们将更全面、更深入地探讨列表推导式,从基础的概念认识,到各类进阶的用法和操作,我们一一揭秘。最

    2024年02月08日
    浏览(52)
  • python 列表推导同filter和map的比较

    filter 和 map 合起来能做的事情,列表推导也可以做,而且还不需要借助难以理解和阅读的 lambda 表达式。 我原以为 map/filter 组合起来用要比列表推导快一些,Alex Martelli 却说不一定——至少在上面这个例子中不一定。在本书的代码仓库(https://github.com/fluentpython/examplecode)中有

    2024年01月18日
    浏览(42)
  • 5、Python循环及列表推导式(List Comprehension)

    For 和 while 循环以及 Python最重要的功能:列表推导式(List Comprehension) 循环是重复执行某些代码的一种方式: In [1]: for 循环指定了以下内容: 要使用的变量名(在这种情况下是 planet ) 要循环遍历的值集合(在这种情况下是 planets ) 你使用 “ in ” 连接它们。 “ in ” 右边

    2024年01月19日
    浏览(46)
  • 【Python】进阶学习:列表推导式如何使用两个for循环

    【Python】进阶学习:列表推导式如何使用两个for循环 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分92+),分享更多关于深度学习、

    2024年03月17日
    浏览(66)
  • python 实现大语言模型中的概率论:两人轮流出手对决时取胜概率的推导

    假设你跟朋友通过打赌投篮来打赌一万块。你们找到一个篮球框,然后约定轮流投篮,谁先投进谁赢。假设你投进的概率是 p,也就是投不进的概率是 1-p,你对手投进的概率是 q,投不进的概率是 1-q,如果由你先投,那么你取胜的概率是多少。 在上面问题中我们把事情进行了

    2024年01月23日
    浏览(47)
  • python中的列表

     1.python中的列表,类似于java中的数组,但是比较牛逼的是,他可以在其中加入不同的数据类型,甚至列表中加列表,当然它里面也可以是空的,也就是空列表。 2.向列表中添加元素 (1) append:列表名字.append(元素)    默认将添加的元素放到列表的最后一位 但是一次只能添

    2023年04月10日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包