나는

2014-12-12 2 views
0

가 좋아 나는 코드의이 부분이 파이썬의 동적 확장 배열을 어떻게해야합니까 : 그래서나는

def Reading_Old_File(self, Path, turn_index, SKU): 
     print "Reading Old File! Turn Index = ", turn_index, "SKU= ", SKU 
     lenght_of_array=0 
     array_with_data=[] 
     if turn_index==1: 
      reading_old_file = open(Path,'rU') 
      data=np.genfromtxt(reading_old_file, delimiter="''", dtype=None) 
      for index, line_in_data in enumerate(data, start=0): 
       if index<3: 
        print index, "Not Yet" 
       if index>=3: 
        print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Reading All Old Items" 
        i=index-3 
        old_items_data[i]=line_in_data.split("\t") 
        old_items_data[i]=[lines_old.strip()for lines_old in old_items_data] 
        print old_items_data[i] 
        print len(old_items_data) 

내가 처음 차례에, 내가 파일을 읽고 있어요 여기서 뭐하는 거지를, 내가 원하는을 모두를 읽고, 모든 데이터를 유지, 그래서 같은 것하기 :

old_items_data[1]=['123','dog','123','dog','123','dog'] 
old_items_data[2]=['124','cat','124','cat','124','cat'] 
old_items_data[n]=['amount of list members is equal each time'] 

파일의 각 라인은 목록에 저장되어야한다, 그래서 turn_index가 클 때, 비교하는 미래에 사용할 수 있습니다 2보다 모든 목록을 반복하여 모든 목록 (줄)의 줄과 오는 줄을 비교할 것입니다. 그럼 어떻게해야합니까, 아니면 목록을 비교할 수있는 더 좋은 방법이 있습니까? 저는 파이썬에 익숙하지 않아서 누군가이 문제와 관련하여 도움이 될 수 있습니까?

감사

+0

여기서 'old_items_data'를 (를) 선언 하시겠습니까? 당신이 만든 적이없는 목록에 항목을 넣기 시작한 것처럼 보입니다. – gcarvelli

+0

그래, 내가 그것을 삭제 한 것처럼 보이지만, 나는 old_items_data = []를 추가 할 것입니다. Reading_Old_File이 시작됩니다. – ipsissimus

답변

3

append을 사용해야합니다.

old_items_data.append(line_in_data.split("\t")) 
+0

필요할 때마다 그들을 모두 액세스 할 수 있습니까? 나는 오래된 값들이 덮어 쓸 것이라고 생각 했지, 안 그래? – ipsissimus

+0

'append'는 목록 끝 부분에 추가합니다. 정확히 원하는 것입니다. 'old_items_data = []'빈리스트를 만들고'old_items_data [0]'과 같은 인덱스에 접근하려고하면 인덱스 밖의 에러가 발생합니다. – gcarvelli

+0

답장을 보내 주셔서 감사합니다. 정확하게 필요한 것 같습니다. – ipsissimus

-1

나는이의 패키지 pandas을 사용합니다. 훨씬 더 빠를뿐만 아니라 더 간단해질 것입니다. pandas.read_table을 사용하여 데이터를 가져옵니다 (구분 기호 및 행 건너 뛰기 지정은 여기에 sepskiprows에 인수를 전달하여 수행 할 수 있음). 그런 다음 pandas.DataFrame.apply을 사용하여 데이터 행에 함수를 적용하십시오.

속도 향상은 pandas이 이와 같은 목록 (예 : pandas DataFrame의 경우 행이라고도 함) 전체에서 작업을 수행하도록 최적화되었음을 나타냅니다. 이는 데이터 가져 오기와 함수를 모든 행에 적용하는 데 모두 적용됩니다. 단순함의 이득은 분명히 분명해야합니다.