问题标签 [python-3.8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
20436 浏览

python - 是否可以添加带有列表理解的 where 子句?

考虑以下列表理解

这会根据条件过滤可迭代对象f并返回x,f(x). 这种方法的问题f(x)是计算两次。如果我们可以这样写就好了

但是在 python 中,我们必须使用嵌套推导来避免对 f(x) 的重复调用,这使得推导看起来不太清晰

有没有其他方法可以让它更具 Python 和可读性?


更新

即将在 python 3.8 中推出!政治公众人物

0 投票
3 回答
20413 浏览

python - ":=" 语法和赋值表达式:什么和为什么?

PEP 572引入了为 Python 3.8 实现的赋值表达式(俗称海象运算符)。这似乎是一个非常重要的新特性,因为它将允许在推导和 lambda 函数中进行这种形式的赋值。

赋值表达式的语法、语义和语法规范究竟是什么?

当PEP 379中关于“添加赋值表达式”的类似想法之前被拒绝时,为什么要引入这个新的(并且看似非常激进的概念) ?

0 投票
1 回答
338 浏览

python - 在 Python 中使用赋值表达式时如何完成赋值语句“x = y := f(x)”?

我在推特上读到:

#Python 新闻:Guido 接受了 PEP 572。Python 现在有赋值表达式。

(更正第二行代码中的矿井)

如前所述,PEP 572 -- 赋值表达式描述了这存在于Python 3.8中:

这是一个提议,用于创建一种使用符号为表达式中的变量赋值的方法NAME := expr

我已经浏览了描述和示例,我发现这是一种避免重复调用或分配的便捷方法,所以不要:

或更高效:

现在可以说:

同样,现在可以说:

但是,我不明白 PEP 中给出的这个例子是如何无效的:

说得对y0 = (y1 := f(x))吗?怎么可能使用?

对于那些想知道它在哪里可用的人的脚注:我已经安装了Python 3.7,但它在那里不起作用,因为 PEP 当前显示为“状态:草稿”。但是,PEP 谈到了概念证明/参考实现(https://github.com/Rosuav/cpython/tree/assignment-expressions),所以使用包含它的 Python 3.8 alpha 0 版本是一个问题。

0 投票
1 回答
2082 浏览

python - 在 Python 3.8 中使用赋值表达式,为什么我们需要在 `with` 中使用 `as`?

现在PEP 572已经被接受了,Python 3.8注定会有赋值表达式,所以我们可以在中使用赋值表达式with,即

代替

它会像以前一样工作。

as关键字与withPython 3.8 中的语句有什么用?这不是违背 Python 的禅宗吗:“应该有一种——最好只有一种——明显的方式来做到这一点。” ?


最初提出该功能时,并没有明确指定赋值表达式是否应该括起来,with并且

可以工作。然而,在 Python 3.8a0 中,

将造成

但括号内的表达式有效。

0 投票
1 回答
1158 浏览

python - 可以在 Python 3.7 中使用 __future__ 启用赋值表达式吗?

Python 3.8 引入了PEP 572中描述的赋值表达式。有没有办法在 Python 3.7.x 中测试这个新特性?

过去,新的语言功能已使用__future__导入向后移植到早期的 Python 版本。

  • __future__赋值表达式有导入吗?
  • 如果是,功能名称是什么?
  • 如果没有,是否有计划添加它?(3.7 将持续一段时间)
0 投票
1 回答
1603 浏览

python - 赋值表达式 `:=` 如何在 Python 中工作?

我已经阅读了关于赋值表达式的PEP 572,我发现这段代码是一个清晰的例子,我可以在其中使用它:

但我很困惑,根据我的阅读,它应该像正常赋值一样工作,但返回值。但它似乎不像那样工作:

现在在修补它之后,我意识到以下工作:

但这感觉太不合情理了。它是唯一需要括号的运算符:

解析器是否有理由将它与 Python 中的其他任何东西区别对待......?我觉得我错过了什么。这不仅仅是一个操作员。

在 REPL 中使用来分配变量会非常有用,:=因为值将被显示。


(更新:我不鼓励对这个敏感话题进行自以为是的讨论。请避免发表有用的评论或答案。)

0 投票
1 回答
847 浏览

python - Pygame 在 Windows 10 上使用 pip install pygame 失败

我在安装到 python 时遇到 Pygame 失败。我尝试了多种解决方法,但均未成功。包括使用与 PiP 相同的不同选项路径模式重新安装 python,包括升级和路径选项。

我现在该怎么办?

0 投票
1 回答
2837 浏览

python - 如何解决 c = cov(x, y, rowvar) RuntimeWarning:python 3.8 中切片错误的自由度 <= 0?

我正在按照教程从以下链接在 python 中构建推荐系统。我正在使用 python 3.8 来构建它。

https://stackabuse.com/creating-a-simple-recommender-system-in-python-using-pandas/

由于这条线,我收到以下错误。

movies_like_forest_gump = user_movie_rating.corrwith(forrest_gump_ratings)

在此处输入图像描述

有人可以帮我解决这个问题吗?

0 投票
3 回答
2114 浏览

python - 如何使用 Python 3.8 alpha 中引入的赋值表达式重写这个简单的循环?

在我看来,将经典的 while 循环与赋值表达式互换并不是那么简单循环交换以保持代码看起来很棒并不是那么简单。

考虑example1

example2

您将如何修改example1以获得相同的输出(不跳过0example2?(当然不改变a = 0

0 投票
2 回答
231 浏览

python - 如何将元组列表复制到共享内存中的现有 numpy 数组

我在共享内存中有一个结构化的 numpy 数组,它只是高维数组的一个“层”。

我有一个元组列表,我想将其值复制到这个(子)数组中。

我发现了如何从元组列表中创建一个新的 numpy 结构化数组。但我不知道如何将此元组列表转换为 EXISTING numpy(子)数组。当然,尺寸已经匹配。

当然,我可以在 Python for 循环中逐元素复制,但这似乎非常低效。我希望在作为 numpy 基础的 C++ 中完成循环。

说明:我的数组在共享内存中的原因是我将它用作 C++ 进程的通用数据结构,由互斥信号量保护。

我的元组列表如下所示:

我的 numpy 数组的元素定义如下: