如何在python中对列表中的每个数字应用数学运算?

2024-04-25 14:42:59 发布

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

我是python的初学者(一周)。在这里,我试着打印60的所有主因子的列表。但对于第19行,我得到以下错误: TypeError:%不支持的操作数类型:“float”和“list”

代码:

whylist = []
factor = []
boom = []
primefactor = []
n = 60
j = (list(range(1, n, 1)))



for numbers in j:
    if n%numbers == 0:
        whylist.append(numbers)
        for everynumber in whylist:
            factor.append(everynumber)

for things in factor:
    u = (list(range(1, things, 1)))
    d = float(things)
    if d%u == 0:
        boom.append(things)
    if len(boom) == 1:
        for every in boom:
            primefactor.append(every)
print(primefactor)

我做错什么了?


Tags: inforifrangefloatlistthingsnumbers
2条回答

要对列表中的每个元素应用数学运算,可以使用列表理解:

new_list = [ x%num for x in old_list]

还有其他方法可以做到这一点。有时人们会使用map

new_list = map(lambda x: x%num, old_list)

但是大多数人更喜欢第一种形式,这种形式通常比使用lambda更高效、更清晰(当您刚开始学习python时,这可能会有点混乱)。

编辑

以下是您尝试的递归实现:

def factorize(n):
    out=[]
    for i in range(2,n):
        if(n%i == 0): #first thing to hit this is always prime
            out.append(i) #add it to the list
            out+=factorize(n/i)  #get the list of primes from the other factor and append to this list.
            return out
        else:
            return [n] # n%i was never 0, must be prime.

print factorize(2000)

另一种选择是使用numpy数组而不是列表。

import numpy as np
j = np.arange(1,n,1)
rem = np.mod(j,num)

纽比会帮你处理广播业务。它也应该比列表理解或地图更快。

相关问题 更多 >