我已經編寫了代碼,它返回給定數字的唯一素數因子。以下是該代碼。此代碼不認爲1是唯一的素數。 factorial3
是返回任意給定數字的階乘列表的函數。列表解析根據條件向元素添加值
def factorials(n):
x=[j for j in range(1, ((n/2)+1)) if n%j==0]
x.append(n)
return x
n=input()
numbers=[]
for i in range(n):
numbers.append(input())
count=[0 for j in numbers]
for i,k in enumerate(numbers):
for j in factorial3(k):
if factorial3(j)==[1,j]:
count[i]+=1
列表count
給我輸入的唯一的素數數字。
例如,對於2號10,20,因子是[2,5,10]和[2,5,10,20]。但是,唯一的主要因素分別是[2,5]和[2,5]。因此,計數是[2,2]
我想達到與列表解析相同但迄今爲止失敗。這是我到目前爲止嘗試過的東西。
c=[0 for i in numbers]
new=[i+1 for i,k in enumerate(numbers) for j in factorial3(k) if factorial3(j)==[1,j]]
print new
new1=[c[i]+1 for i,k in enumerate(numbers) for j in factorial3(k) if factorial3(j)==[1,j]]
print new1
我幾乎在那裏,只是想念一件事情只是減少迭代一次。
不要使用列表解析的副作用;這是非常浪費的,因爲你實際上並沒有使用你建立的列表。 –
@MartijnPieters,我只是想知道如何做知識目的的列表理解。我不會在實際情況下使用它們。 –