gpt4 book ai didi

Python:根据条件划分列表的元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:58:02 24 4
gpt4 key购买 nike

我试图找出前 20 个自然数的最小公倍数(欧拉计划问题 5)。为此,我的算法是:

  1. 列表中有数字 1 到 20
  2. 仅除列表中可被 i 整除的元素,其中 i 在范围 (2-20) 内。
  3. 无论列表中剩下什么数字,将它们相乘就是 lcm。

这是我们第一次在学校实际用于计算 lcm 的最朴素的算法。

现在,我不知道如何根据条件划分列表的元素。我试过:

a=[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
for x in a:
if(x%2==0):
x=x/2

这似乎行不通。我也试过:

a=[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
a1=[if(x%2==0): x/2 for x in a]

上面的 if 条件后有和没有“:”。这是行不通的。我有以下问题:

一个。为什么第一个循环不能正常工作?

谁能告诉我该怎么做?

我的算法能正常工作吗?

最佳答案

a. Why isn't the first loop working correctly?

出于同样的原因:

Foreach in Python not working as expected

b. Can someone tell me how I can do this?

您可以执行以下任一操作:

a=[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
for i, x in enumerate(a):
if x%2==0:
a[i]=x/2

或者:

a=[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
a1=[x/2 if x%2==0 else x for x in a]

c. Will my algorithm work correctly?

我不这么认为。你最终会把每个人除以自己,结果总是 1。

但是 SO 中还有其他问题有简单的答案,例如:

find least common multiple of numbers 1-20

关于Python:根据条件划分列表的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29853387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com