如何制作列表,从中取每个偶数的平方和立方?

2024-09-29 23:30:16 发布

您现在位置:Python中文网/ 问答频道 /正文

在对每个偶数进行平方和立方运算后,我想列出一个列表

以下是我迄今为止的代码:

def sq_cube(numbers):
    ls1 = []
    for i in numbers:
        if i%2 == 0:
            ls1.append(i)
        else:
            pass

    ls2square = [x**2 for x in ls1]
    ls3cube = [x**3 for x in ls1]

    ls4all = list(ls2square +ls3cube)
return ls4all


RUN: sq_cube([1,2,3,4,6])
OUTPUT:[4, 16, 36, 8, 64, 216]

I would love my OUTPUT to be: [[4, 8], [16, 64], [36, 216]]

ls1:在这里,我将列表1,2,3,4,6排序为偶数

ls2square:将ls1中的偶数平方

ls3cube:对ls1中的偶数进行立方运算

正如您在我的输出中看到的,它给出了两个列表,但没有给出每个列表的偶数 对其单独列表进行编号,其中偶数为平方和立方


Tags: 代码in列表foroutputifdefsq
3条回答

问题来自ls4all。你的代码是

ls4all = list(ls2square +ls3cube)

变量ls4all不包含所需的列表:[[4, 8], [16, 64], [36, 216]],因为它是ls2squarels3cube的串联。我们希望在ls2squarels3cube中有元素对的列表。为了实现这一点,您可以创建一个迭代器来输出ls2squarels3cube的元素对,例如,使用zip命令

zip命令的工作原理如下:

>>> list(zip([1,10], [2,20]))
[(1, 2), (10, 20)]

如您所见,它将[1,10][2,20]中的元素聚集在一起,形成成对。 因此,您可以通过以下方式使用zip

ls2square = [4, 16, 36]
ls3cube = [8, 64, 216]
ls4all = list([a,b] for a,b in zip(ls2square, ls3cube))
print(ls4all)

无论如何,简短的回答是:

>>> print([(k**2, k**3) for k in [1,2,3,4,6] if k % 2 == 0])
[(4, 8), (16, 64), (36, 216)]

更新: 如果整数的类型为float,则 k % 2将引发以下错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: float modulo

因此,如果要将浮点值四舍五入到最接近的整数,只需使用round函数,如下所示:

ls2square = [round(x)**2 for x in ls1]
ls3cube = [round(x)**3 for x in ls1]

以上简短的回答是:

>>> print([(round(k)**2, round(k)**3) for k in [1.0, 2.0, 3.0, 4.0, 6.0] if round(k) % 2 == 0])
[(4, 8), (16, 64), (36, 216)]

创建一个新列表 轮进名单 循环检查每个数字是否为偶数 然后把这个数平方和立方

def sq_cube(numbers):
    new_string = []
    numbers = [round(num) for num in numbers]
    for W in numbers:
      if W % 2 ==0:
        new_string.append([W**2,W**3])
        
    return new_string

由于您希望相同编号的正方形和立方体位于同一列表中,因此可以使用此选项,因为两个列表(ls2square、ls3cube)具有相同的长度,而不只是将它们添加在一起,您可以在单独的列表中添加它们所具有的每个对应元素,ls2square中的元素0与ls3cube的元素0一起,依此类推:

def sq_cube(numbers):
    ls1 = []
    for i in numbers:
        if i%2 == 0:
            ls1.append(i)
        else:
            pass

    ls2square = [x**2 for x in ls1]
    ls3cube = [x**3 for x in ls1]
    ls4all= [[ls2square[k],ls3cube[k]] for k in range(len(ls3cube))]
    return ls4all

相关问题 更多 >

    热门问题