python 一行循环_python中的for循环一行

2023-05-16

解决方案

如果您严格要求一行,那么这就是解决方案:get_cubes = lambda x: [pow(i, 3) for i in range(0, x+1, 3)]

但是由于在Python中,清晰性和可读性应该始终是优先考虑的,所以最好像@daniel那样将其作为函数编写:def get_cubes(x):

return [pow(i, 3) for i in range(0, x+1, 3)]

输出

使用for循环测试函数可以得到以下结果:for i in range(20):

print(i, ':', get_cubes(i))

0 : [0]

1 : [0]

2 : [0]

3 : [0, 27]

4 : [0, 27]

5 : [0, 27]

6 : [0, 27, 216]

7 : [0, 27, 216]

8 : [0, 27, 216]

9 : [0, 27, 216, 729]

10 : [0, 27, 216, 729]

11 : [0, 27, 216, 729]

12 : [0, 27, 216, 729, 1728]

13 : [0, 27, 216, 729, 1728]

14 : [0, 27, 216, 729, 1728]

15 : [0, 27, 216, 729, 1728, 3375]

16 : [0, 27, 216, 729, 1728, 3375]

17 : [0, 27, 216, 729, 1728, 3375]

18 : [0, 27, 216, 729, 1728, 3375, 5832]

19 : [0, 27, 216, 729, 1728, 3375, 5832]

解释

对于那些问为什么@daniel的代码有效的人:

原始代码执行以下操作:给定一个x,从0迭代到3 divides x加上1的次数。

对于每个x,乘以3,并将其提升到3的幂次

返回包含步骤2结果的列表

步骤1最初编写为range(int((x - x%3) / 3) + 1)

当除以3时减去一个数字的提醒,然后在加1之前除以3。但是同样的结果也可以通过把x除以3的整数部分,然后再加上1得到,这看起来像这样:int(x / 3) + 1

第2步将每个迭代乘以3,然后将其提升到3的幂次,但也可以通过使用范围(就像@daniel所做的那样)来实现“乘法”,方法是:range(0, x+1, 3)

从0到x+1在3的步骤上迭代,得到相同的结果。一、 ex正在10:range(0, 10 + 1, 3) | i*3 for i in range(int(x / 3) + 1)

============================================================

0 | 0*3 = 0

3 | 1*3 = 3

6 | 2*3 = 6

9 | 3*3 = 9

对于步骤3,我们只需要应用pow(x, 3)(或x ** 3),然后使用列表理解将所有内容都放在一行中,然后我们可以将其放在lambda函数中或函数的return语句中。[pow(i, 3) for i in range(0, x+1, 3)]

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

python 一行循环_python中的for循环一行 的相关文章

随机推荐