作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
到目前为止,在 Python 中,我只见过一次指定包含一个元素的列表理解。比如都是下面的形式
[f(x) for x in <iterable>]
有没有办法一次指定多个元素?例如,
[f(x), g(x) for x in <iterable>]
我问这个问题是因为我想创建一个列表理解来计算某个数字 x 的所有除数,但我想尽可能高效地执行此操作。现在我正在使用以下内容,
[y for y in range(1,x+1) if x%y == 0]
但是我想做这样的事情,
[y, x/y for y in range(1, sqrt(x)+1) if x%y == 0]
因为这样会更有效率。顺便说一句,我没有这样做的实际理由。有人告诉我,这只是一个具有挑战性的问题,目标是尽可能以最小、最有效的列表理解来完成。
提前致谢。
编辑:好的,看来我必须使用元组了。我试图避免这种情况,因为我必须创建另一个函数来展平列表,这会使我的解决方案更长。
编辑 2:以防万一有人偶然发现这个问题,我在原始问题中想做的事情的答案是:
[y for x in <iterable> for y in f(x), g(x)]
它在列表理解中使用嵌套的 for 循环来完成工作。
最佳答案
你可以把它压平到位
[y if i else x/y for y in range(1, sqrt(x)+1) for i in 0,1 if x%y == 0]
关于Python 列表理解 : Is it possible to specify the inclusion of two elements at a time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11534113/
我是一名优秀的程序员,十分优秀!