范围中数字的数字平方的乘法

时间:2018-10-29 15:52:15

标签: python python-3.x list list-manipulation

我想获得一个列表,该列表提供了一系列特定要求 我的代码只能将列表中的数字相乘。 我想获取列表中数字的乘以“数字平方”

例如: 定义的范围=(1,200)

wanted_list = [1 ^ 2,2 ^ 2,3 ^ 2,...,(34 = 3 ^ 2 * 4 ^ 2),(35 = 3 ^ 2 * 5 ^ 2),..., (199 = 1 ^ 2 * 9 ^ 2 * 9 ^ 2)]

这是我的代码

def mult(liste):
    a=1
    for i in liste:
        a*=i       #I think the problem is here
    return a

listemm = [x for x in range(1,200)]
print(listemm)
qe= [mult(int(digit) for digit in str(numb)) for numb in listemm]
print(qe)

2 个答案:

答案 0 :(得分:3)

我会那样做:

r = range(1, 200)


def reduce_prod(n):
    p = 1
    for i in str(n):
        p *= int(i)**2
    return p


wanted_list = [reduce_prod(x) for x in r]

产生:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 0, 1, ...]
#                                 ^
#                                 from 10 -> 1^2 * 0^2 = 0

答案 1 :(得分:1)

您非常亲密。这是您自己尝试的范围最大为30的更正版本。问题是您的函数仅适用于两位数。在这里,我使用if-else条件检查数字是否小于10。如果是,我将其平方,否则将其发送给您的函数。

在函数中,您未对数字进行平方。您也不需要listemm。您可以在列表理解中直接使用range

def mult(liste):
    a=1
    for i in liste:
        a*=i**2       # Square here (the problem was partly here)
    return a

qe= [numb**2 if numb<10 else mult(int(digit) for digit in str(numb)) for numb in range(1,30)]
print(qe)

# [1, 4, 9, 16, 25, 36, 49, 64, 81, 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 0, 4, 16, 36, 64, 100, 144, 196, 256, 324]