首页 > 编程语言 >Python学习计划——2.4列表推导式(List Comprehensions)

Python学习计划——2.4列表推导式(List Comprehensions)

时间:2024-07-22 09:55:00浏览次数:10  
标签:输出 推导 Python List 列表 range Comprehensions print squares

列表推导式是Python的一种简洁且强大的语法,用于生成新的列表。它可以用更少的代码、更清晰的方式来创建列表,特别是在处理简单的循环和条件操作时。

1. 基本语法

列表推导式的基本语法如下:

[expression for item in iterable]
  • expression:表达式,计算结果用于生成列表的元素。
  • item:迭代变量,从可迭代对象中取出每个元素。
  • iterable:可迭代对象,如列表、元组、字符串等。

示例:

# 使用列表推导式生成平方数列表
squares = [x**2 for x in range(10)]
print(squares)  # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
2. 带条件的列表推导式

可以在列表推导式中加入条件判断,只包括满足条件的元素。

[expression for item in iterable if condition]

示例:

# 使用列表推导式生成偶数平方列表
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)  # 输出: [0, 4, 16, 36, 64]
3. 嵌套列表推导式

列表推导式可以嵌套,用于处理多层循环。

[expression for item1 in iterable1 for item2 in iterable2]

示例:

# 使用嵌套列表推导式生成笛卡尔积
cartesian_product = [(x, y) for x in range(3) for y in range(3)]
print(cartesian_product)  # 输出: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
4. 带多个条件的列表推导式

可以在列表推导式中加入多个条件判断。

[expression for item in iterable if condition1 and condition2]

示例:

# 使用列表推导式生成符合多个条件的元素
filtered_list = [x for x in range(20) if x % 2 == 0 and x % 3 == 0]
print(filtered_list)  # 输出: [0, 6, 12, 18]
5. 字符串操作中的列表推导式

列表推导式可以用于处理字符串的操作,如将字符串中的每个字符转换为大写。

# 将字符串中的每个字符转换为大写
uppercase_letters = [char.upper() for char in "hello"]
print(uppercase_letters)  # 输出: ['H', 'E', 'L', 'L', 'O']
6. 使用函数的列表推导式

可以在列表推导式中调用函数来生成新列表。

def square(x):
    return x**2

# 使用函数生成平方数列表
squares = [square(x) for x in range(10)]
print(squares)  # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
7. 可运行的Python案例

下面是一个完整的Python程序,演示了各种列表推导式的用法。

# 1. 基本列表推导式
squares = [x**2 for x in range(10)]
print("平方数列表:", squares)  # 输出: 平方数列表: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 2. 带条件的列表推导式
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print("偶数平方列表:", even_squares)  # 输出: 偶数平方列表: [0, 4, 16, 36, 64]

# 3. 嵌套列表推导式
cartesian_product = [(x, y) for x in range(3) for y in range(3)]
print("笛卡尔积:", cartesian_product)  # 输出: 笛卡尔积: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

# 4. 带多个条件的列表推导式
filtered_list = [x for x in range(20) if x % 2 == 0 and x % 3 == 0]
print("符合多个条件的列表:", filtered_list)  # 输出: 符合多个条件的列表: [0, 6, 12, 18]

# 5. 字符串操作中的列表推导式
uppercase_letters = [char.upper() for char in "hello"]
print("大写字母列表:", uppercase_letters)  # 输出: 大写字母列表: ['H', 'E', 'L', 'L', 'O']

# 6. 使用函数的列表推导式
def square(x):
    return x**2

squares = [square(x) for x in range(10)]
print("使用函数生成的平方数列表:", squares)  # 输出: 使用函数生成的平方数列表: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

可以将上面的代码复制到你的IDE中运行,观察程序的输出。这个案例综合了列表推导式的各种用法,帮助你理解和掌握这些操作。继续加油,学习Python会越来越有趣和有用!

标签:输出,推导,Python,List,列表,range,Comprehensions,print,squares
From: https://blog.csdn.net/qq_41698317/article/details/140601553

相关文章

  • Python学习计划——2.3常用内置函数(len, max, min, sum, etc.)
    Python提供了许多内置函数,用于简化对数据结构的操作。以下是一些常用的内置函数及其详细说明。1.len()len()函数用于返回对象(如列表、元组、字符串、字典等)的长度(元素个数)。示例:#列表fruits=["apple","banana","cherry"]print(len(fruits))#输出:3#元组c......
  • 哪个 Python 框架可以在 Google Collab 中显示和更改图像?
    我希望能够在使用GoogleCollab时为RL绘制高fps的位图。我现在可以使用OpenCV绘制图像cv2_imshowgoogle替换cv2.imshow但是,它无法替换现有图像,它下面绘制了新的我能够在替换imshow函数中使用一些JavaScript来修复它。但刷新率约为......
  • VSCode 自动建议 python 导入而不依赖 Intellisense
    我正在使用Transformer中的AutoModel之类的对象,并且经常遇到自动导入建议无法找到的对象。我总是希望VSCode建议“从Transformer中执行”,而不是费心寻找它找不到的原因每当看到未定义的“AutoModel”时,都会导入AutoModel”,因此无需扫描任何python导入目录。这......
  • 如何使用Python计算位移自相关函数?
    我正在使用python来分析粒子的异常扩散。我已经得到了粒子轨迹的位移,我想计算并绘制位移自相关与滞后时间t的关系。我认为可能存在使用t和位移(如deltar)的自相关函数的一般函数,但我不能没找到。我可以得到函数或代码吗?可以使用numpy和matplotlib库在Python......
  • 一天一点点,第四天Python基础
    第一天:一天一点点。Python基础-CSDN博客第二天:一天一点点,接上章Python基础-CSDN博客第三天:一天一点点,第三天Python基础(循环语句)-CSDN博客推导式推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。推导式是一种强大且简洁的语法,适用于生......
  • Python - for循环不使用正则表达式附加数组
    以下代码从URL获取版本号,然后对于每个版本号,转到该版本号的页面并使用文件名的特定模式填充数组。生成的数组应包含每个版本号的文件名列表,但它似乎只包含早期版本(2.6)。使用print语句,我可以看到代码的工作原理是它获取sha256sums.asc文件-所有这些文件,所有版本。我猜......
  • 使用 callable_iterator (re.finditer) 导致 Python 冻结
    我有一个为文本的每一行调用的函数。deftokenize_line(line:str,cmd=''):matches=re.finditer(Patterns.SUPPORTED_TOKENS,line)tokens_found,not_found,start_idx=[],[],0print(matches)formatchinmatches:pass#Rest......
  • Python 的 time.sleep - 永远不会醒来
    我认为这将是那些简单的问题之一,但它让我感到困惑。[停止媒体:我是对的。找到了解决方案。查看答案。]我正在使用Python的单元测试框架来测试多线程应用程序。很好而且很直接-我有5个左右的工作线程监视一个公共队列,以及一个为它们制作工作项的生产者线程......
  • python中使用mitmproxy的http模块出错
    我有一个使用mitmproxyhttp函数的代码,它在这里惨败:defmain(stdscr):try:parser=argparse.ArgumentParser(description='NetSourNetworkAnalyzer')parser.add_argument('--proxy',action='store_true',help='EnableH......
  • 使用python图像去噪没有获得所需的重建图像
    我是python机器学习的初学者,我正在编写一个程序,使图像变得嘈杂,然后我的程序输出重建的图像。我正在使用加性高斯白噪声并使用前馈神经网络。我的程序显示真实图像、噪声图像和重建图像。这些是我通常得到的结果。有人知道如何解决这样的问题吗?这是我的代码:ap......