2016-10-09 6 views
1

数字の素因数分解を見つけるためのコードを書いています。 main関数は数値をインクリメントします。タイミング実験を行うためにコードを使用したいので、私はそれをやっています。私はそれが超効率的ではないことを気にしない、私のためのプロジェクトの一部は、より効率的な自分自身になるでしょう。それはまだ完全には完了していない(例えば、素因数分解を単純化しない)。私は主要な機能を除いてすべての機能をテストしていますし、機能しているので問題はありません。.clear()リストが機能しない - python

私のコードは

import math 
import time 

primfac=[] 

def primes(n): 
    sieve = [True] * n 
    for i in xrange(3,int(n**0.5)+1,2): 
     if sieve[i]: 
      sieve[i*i::2*i]=[False]*((n-i*i-1)/(2*i)+1) 
    return [2] + [i for i in xrange(3,n,2) if sieve[i]] 


def factfind(lsp,n): #finds factors of n among primes 
    for i in lsp: 
     if n%i==0: 
      primfac.append(i) 
     else: 
      i+=1 

def primfacfind(n1,n2): 
    while n1 < n2: 
     n = n1 

     time_start = time.clock() 

     factfind(primes(n),n) 
     print primfac 

     time_elapsed = time.clock() - time_start 
     print "time:", time_elapsed 

     primfac.clear() 

     n1+=1 

print primfacfind(6,15) 

そして、それは出力

[2, 3] 
time: 7.5e-05 
Traceback (most recent call last): 
    File "python", line 43, in <module> 
    File "python", line 39, in primfacfind 
AttributeError: 'list' object has no attribute 'clear' 

を与え、私が間違っているものを本当によく分からない実行されています。それは素因数分解のための正しい数を与えており、それは時間を印刷していますが、リストをクリアするようには見えません。行primfac.clear()をコメントアウトすることは機能しています。

ご協力いただければ幸いです。ありがとう!

+0

[なぜpythonにlist.clear()メソッドがありませんか?](http://stackoverflow.com/questions/1401933/why-is-there-no-list-clear-method-in-python)説明のために。 – roganjosh

+0

@roganjosh 'clear'メソッドがPython 3で追加されました。OPはおそらくPython 2を使用しています –

+0

@roganjosh、ありがとう、ありがとう。私はlist.clear()が3.3で追加されただけであることをドキュメントでは言及していないことを実際に素早く指摘するかもしれません。それは私を捨てた。 – heather

答えて

4

list.clear()メソッドがPython 3.3で追加されました。同等の機能は以前のバージョンではdel primfac[:]で実現できます。

0

Pythonのlistには、Python 3.xまではclearメソッドがありません。あなたのコードは、Python 2.x以前では動作しません。新しいリストを作成するか、古いリストのすべての内容を削除することができます。

#create a new list 
primfac = [] 

#or delete all the contents of the old list 
del primfac [:] 
関連する問題