首页 > 后端开发 > Python教程 > 在 Python 中与列表和 NumPy 数组一起使用时,'and”和'&”有何不同?

在 Python 中与列表和 NumPy 数组一起使用时,'and”和'&”有何不同?

Mary-Kate Olsen
发布: 2024-11-26 05:22:14
原创
970 人浏览过

How Do `and` and `&` Differ When Used with Lists and NumPy Arrays in Python?

了解列表上的布尔和位运算与 NumPy 数组的行为

简介

在 Python 中,“and”和“&”运算符的不同之处在于用于列表和 NumPy 数组时的行为。这种差异可能会令人费解,特别是如果您不熟悉按位运算的话。

布尔运算与按位运算

'and' 是一个逻辑运算符,用于测试两者是否相同其操作数逻辑上为 True。另一方面,“&”是按位运算符,对其操作数执行按位运算(例如 AND、OR、XOR)。

列表的行为

与列表一起使用时,“and”将列表项计算为布尔值。如果所有项目均为 True,则“and”的计算结果为 True;否则,其计算结果为 False。例如:

mylist1 = [True, True, True, False, True]
mylist2 = [False, True, False, True, False]

mylist1 and mylist2  # Output: [False, True, False, True, False]
登录后复制

'&',但是不支持列表上的按位运算。它会引发 TypeError,因为列表包含任意元素。

mylist1 & mylist2  # Output: TypeError: unsupported operand type(s)
登录后复制

NumPy 数组的行为

对于 NumPy 数组,行为有所不同。 NumPy 数组支持向量化计算,这意味着可以同时对多个元素执行操作。

“and”不能用于长度大于 1 的 NumPy 数组,因为数组没有简单的布尔值。

import numpy as np

np_array1 = np.array(mylist1)
np_array2 = np.array(mylist2)

np_array1 and np_array2  # Output: ValueError: The truth value of an array with more than one element is ambiguous
登录后复制

但是,'&' 可以在 NumPy 布尔数组上使用来执行按位 AND 运算按元素排序。

np_array1 & np_array2  # Output: array([False, True, False, False, False], dtype=bool)
登录后复制

摘要

  • 使用 'and' 比较布尔值或计算逻辑表达式。
  • 使用 ' &' 对整数或布尔值 NumPy 执行按位运算数组。
  • 列表不能使用 '&' 进行组合,因为它们可以包含任意元素。
  • NumPy 数组可以支持使用 '&' 进行向量化按位运算,但处理 'and' 的方式与列表不同,因为它们的矢量化性质。

以上是在 Python 中与列表和 NumPy 数组一起使用时,'and”和'&”有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板