,= 运算符

2023-12-02

在查看一些 Python 代码时,我注意到使用了类似的内容,=操作员:

a ,= b

经过实验和非常仔细的检查赋值语句语法,我开始意识到这实际上是元组的“元组拆包”a,左侧长度为1的集合b在右边。因此,在一个简单的情况下,它类似于以下内容,但也适用于任何迭代器/生成器:

assert len(b)
a = b[0]

我很好奇这个技巧是否有名字,是否有任何不那么晦涩的技术可以达到相同的结果?


没有这样的操作员,这是工厂的正常运行赋值语句并附有目标清单。大多数人会使用不同的间距,a, = b.

你正在看元组赋值(也叫拆包),并且左侧可以有多个元素。请记住,这是comma这使得表达式计算为元组,而不是括号。单目标形式没有更具体的名称。

左侧是一个只有一个元素的元组,a,。然后右侧被解包,并且必须恰好包含一个元素,然后将其存储在a。如果左侧有更多目标,则右侧必须具有匹配数量的元素:

>>> 1,  # a tuple with one element
(1,)
>>> a, = 1,  # assigning one value to the left-hand targets.
>>> a
1
>>> a, b = 1,  # not enough elements
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
>>> a, b = 1, 2, 3  # the syntax requires an exact match, 3 is too many
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
>>> a, b = 1, 2   # two values assigned
>>> a
1
>>> b
2

分配给目标列表是分配运算符的一项正常且广泛使用的功能,即使不是每个人都意识到这可以与单元素元组作为目标一起使用。

该技术在处理 API 时经常使用,该 API 将always生成一个元组或一个列表,但您只期望一个值。一个典型的例子是数据库 API:

cursor.execute('SELECT id FROM TABLE WHERE condition LIMIT 1')
result_id, = cursor.fetchone()

数据库查询结果的每一行始终是一个序列,即使您只选择了一列。

这种技术没有“不那么晦涩难懂”的形式,不是。一旦你了解了它,你就不需要任何其他技术,它也不再晦涩难懂!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

,= 运算符 的相关文章

  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 如何使用 imaplib 获取“消息 ID”

    我尝试获取一个在操作期间不会更改的唯一 ID 我觉得UID不好 所以我认为 Message ID 是正确的 但我不知道如何获取它 我只知道 imap fetch uid XXXX 有人有解决方案吗 来自 IMAP 文档本身 IMAP4消息号
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • Argparse nargs="+" 正在吃位置参数

    这是我的解析器配置的一小部分 parser add argument infile help The file to be imported type argparse FileType r default sys stdin parser
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 以同步方式使用 FastAPI,如何获取 POST 请求的原始正文?

    在中使用 FastAPIsync not async模式 我希望能够接收 POST 请求的原始 未更改的正文 我能找到的所有例子都显示async代码 当我以正常同步方式尝试时 request body 显示为协程对象 当我通过发布一些内容来
  • 如何通过在 Python 3.x 上按键来启动和中断循环

    我有这段代码 当按下 P 键时会中断循环 但除非我按下非 P 键 否则循环不会工作 def main openGame while True purchase imageGrab if a sum gt 1200 fleaButton ti
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • 在 Pandas 中使用正则表达式的多种模式

    我是Python编程的初学者 我正在探索正则表达式 我正在尝试从 描述 列中提取一个单词 数据库名称 我无法给出多个正则表达式模式 请参阅下面的描述和代码 描述 Summary AD1 Low free DATA space in data
  • 使用 Firefox 绕过弹出窗口下载文件:Selenium Python

    我正在使用 selenium 和 python 来从中下载某些文件web page http www oceanenergyireland com testfacility corkharbour observations 我之前一直使用设
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 使用 PyTorch 分布式 NCCL 连接失败

    我正在尝试使用 torch distributed 将 PyTorch 张量从一台机器发送到另一台机器 dist init process group 函数正常工作 但是 dist broadcast 函数中出现连接失败 这是我在节点 0
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • 具有自定义值的 Django 管理外键下拉列表

    我有 3 个 Django 模型 class Test models Model pass class Page models Model test models ForeignKey Test class Question model M
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi

随机推荐

  • WebSocket 中是否有像lastEventId 这样的数据块ID?

    我使用 WebSockets 在浏览器 客户端 中的按钮按下事件上从服务器发送图像 WebSocket API 的 onmessage 方法接收到的图像数据是 Blob 结构 分为多个块 问题在于短时间内多次按下按钮事件 收到的块是出故障
  • 如何加快AMI(Amazon Machine Image)的创建速度?

    AMI 创建需要long time 有没有办法让它发生得更快 例如 也许通过更改一些 AMI 创建设置 可能涉及 IOPS 卷类型 设备等 我不知道如何更改这些设置或者它是否有帮助 因此 我不确定现阶段有什么方法可以加快 AMI 创建过程
  • 通过 HTTP 表单上传文件,通过 MultipartEntityBuilder,带有进度条

    The 简洁版本 org apache MultipartEntity已弃用 其升级 MultipartEntityBuilder 在我们的在线论坛中似乎代表性不足 让我们解决这个问题 如何注册回调 以便我的 Android 应用程序可以在
  • 如何在Python中获取JavaScript内容

    我有一个网站 其中有我想要获取的存储在 JavaScript 中的数据 我如何获取它 代码是这样的 http pastebin com zhdWT5HM 我想从 varplayersData 行获取 我想获取这个东西 playerId sh
  • 为什么单节点集群只有一小部分可用的 cpu 配额?

    pod 将不会启动 因为 没有可用的节点与以下所有谓词匹配 cpu 不足 在上面的问题中 我在开始使用 3 个容器进行部署时遇到了问题 经过进一步调查 似乎只有 27 的 CPU 配额可用 这看起来非常低 其余的 CPU 似乎分配给了一些默
  • 如何为 Jtable 中的行添加边框?

    我有一个 Jtable 我想通过向行添加边框来突出显示该行 我已经延长了DefaultTableCellRenderer我认为这项工作需要在getTableCellRendererComponent method 我猜测 由于似乎没有行的概
  • 如何手动向ggplot添加图例? - R [重复]

    这个问题在这里已经有答案了 我有以下情节 我用来生成该图的代码是 ggplot df aes x instance y total hits geom point size 1 geom line geom line aes x df in
  • 获取有序矩阵

    我想对矩阵的值进行排序并将其从最大值转换为最小值 如这个简单且可复制的示例所示 From d lt c 2 34 25 0 13 0 25 2 1 m lt matrix d 3 3 m 1 2 3 1 2 0 25 2 34 13 2 3
  • Android 两点之间的距离

    我有 3 种计算距离的方法 这 3 种方法都给了我不同的答案 double lat 6 924049 double lng 79 853807 double lat1 6 856461 double lng1 79 912748 如何计算两
  • 如何检查对象是一个集合? [复制]

    这个问题在这里已经有答案了 我在用着Set来处理我的任务 但是当我调试时 我得到了 mySet has不是一个函数 所以我的问题是如何检查它是否是Set 就像对于Array has Array isArray obj 您可以使用实例化 le
  • 使用 Roslyn 查找特定方法的所有方法调用

    我正在使用 Roslyn 开发代码分析器 我当前的任务是查找程序集中未使用的所有内部方法 我从一个MethodDeclarationSyntax并从中得到符号 然后我使用FindCallersAsync中的方法SymbolFinder 但即
  • 在ggplot2中制作带有离散x轴的线图

    我正在构建一个带有小平面网格的 ggplot2 图形 Y 轴是百分比 X 轴是浓度 以数字表示 每个方面有 3 组 0 24 和 48 小时 ggplot data MasterTable aes x Concentration y Per
  • Pandas - 计算所有列的 z 分数

    我有一个包含单列 ID 的数据框 所有其他列都是我想要计算 z 分数的数值 这是其中的一个小节 ID Age BMI Risk Factor PT 6 48 19 3 4 PT 8 43 20 9 NaN PT 2 39 18 1 3 PT
  • nmake 推理规则限制为深度 1

    我注意到了nmake exe将其推理规则搜索限制为一个丢失的文件 我发现网络上没有提到这个问题 我错过了什么吗 cat Makefile SUFFIXES a b d e all abc e a b copy b d copy d e co
  • React Router - 基于最后一页的 useNavigation

    我正在尝试在 React 应用程序中做一些非常简单的事情 我想要一个 后退 按钮将用户带到上一页 除非用户是从特定页面到达的 在这种情况下 后退 会将他们路由到不同的页面 类似于 const navigate useNavigate if
  • 通过 iTunes Connect 向 Apple 提交崩溃日志

    如何强制 iPhone 或 iPod Touch 向 Apple 发送 更新其崩溃日志 我的设备中的应用程序可能会崩溃 当我访问时iTunes连接 我没有看到任何崩溃日志 你不能强迫它 并且崩溃日志不会由设备上传到 Apple 当用户同步设
  • 可跨越协议

    我正在尝试转换以下 Swift 2 3 代码 Example usage 0 lt 778 binarySearch 0 lt 145 145 extension CollectionType where Index RandomAcces
  • 强制 SQL Remote 查询进行远程过滤而不是本地过滤

    我有一个 MS SQL 查询 它从远程服务器提取数据 我要提取的数据需要按运行时确定的日期进行过滤 当我像这样运行查询时 SELECT FROM SERVER Database dbo RemoteView WHERE EntryDate
  • Flutter:runZoned 函数上已弃用“onError”

    当我在 main dart 文件上使用最新的 Flutter v 1 17 1 和 Dart 2 8 2 版本时 收到此错误消息 onError 已被弃用 不应使用 请改用 runZonedGuarded 尝试用替换成员替换已弃用成员的使用
  • ,= 运算符

    在查看一些 Python 代码时 我注意到使用了类似的内容 操作员 a b 经过实验和非常仔细的检查赋值语句语法 我开始意识到这实际上是元组的 元组拆包 a 左侧长度为1的集合b在右边 因此 在一个简单的情况下 它类似于以下内容 但也适用于