2013-07-10 3 views
1

나는리스트를 통해 실패를 반복하는 실패에 빠졌고 "TypeError : 'list'객체를 호출 할 수 없다는 오류가 발생합니다. n 개의 레코드가있는 세 개의 목록이 있습니다. 같은 줄에있는 모든 목록의 첫 번째 레코드를 쓰고 n 개의 레코드에 대해이 절차를 반복하려면 n 개의 줄이 생깁니다. 다음은 사용하려는 목록입니다.for 루프에서 목록을 호출하는 방법은 무엇입니까?

lst1 = ['1','2','4','5','3'] 
lst2 = ['3','4','3','4','3'] 
lst3 = ['0.52','0.91','0.18','0.42','0.21'] 

istring="" 
lst=0 
for i in range(0,10): # range is simply upper limit of number of records in lists 
    entry = lst1(lst) 
    istring = istring + entry.rjust(11) # first entry from each list will be cat here 
    lst=lst+1 

모든 시작은 정말 도움이 될 것입니다.

[]를 보통 무언가의 요소를 액세스 나타내고 반면

+1

을 lst1 [lst]' – kojiro

+1

목록의 목록을 만든 다음 반복하십시오. –

답변

2
>>> lst1 = ['1','2','4','5','3'] 
>>> lst2 = ['3','4','3','4','3'] 
>>> lst3 = ['0.52','0.91','0.18','0.42','0.21'] 
>>> a = zip(lst1, lst2, lst3) 
>>> istring = "" 
>>> for entry in a: 
...  istring += entry[0].rjust(11) 
...  istring += entry[1].rjust(11) 
...  istring += entry[2].rjust(11) + "\n" 
... 
>>> print istring 
      1   3  0.52 
      2   4  0.91 
      4   3  0.18 
      5   4  0.42 
      3   3  0.21 
+0

감사합니다. 이것은 내가 원하는 것을 제외하고는 이전 스크립트를 실행할 때마다 목록에있는 레코드의 수를 모를뿐입니다. 그것을 돌보는 방법? – Ibe

+0

@Ibe 각 줄마다 줄 번호를 인쇄하려고합니까? iter (a)에서'for index, entry :'를 실행하여'for' 루프의 각 반복에 대한 카운트를 얻을 수 있습니다.'index'는 현재 루프 카운트가됩니다. –

+0

아니요, 필자는 [0], [1], ...을 쓰지 않고 단지 "항목 [0], 항목 [1] ...."을 자동화하고 싶다는 것 외에는 줄 수를 원하지 않습니다. 각 실행 후 기록의 수를 알아라. – Ibe

1

대신 일반적으로 함수를 호출 나타내고 entry = lst1(lst)

()의 entry = lst1[lst]보십시오.

목록은 기능이 아닙니다. 또한

, 당신이 당신의 자신의 색인을 유지할 수있는 반면, for 루프는이 목록의 어떤 크기 작동이 필요

x = [1,2,3,4,5,7,9,11,13,15] 
y = [2,4,6,8,10,12,14,16,18,20] 
z = [3,4,5,6,7,8,9,10,11,12] 
for i in range(0,10): 
    print x[i], y[i], z[i] 

1 2 3 
2 4 4 
3 6 5 
4 8 6 
5 10 7 
7 12 8 
9 14 9 
11 16 10 
13 18 11 
15 20 12 
3

한다 :`나는 방금 말은 생각

for i in zip(lst1, lst2, lst3): 
    for j in i: 
     print j.rjust(11), 
    print 

      1   3  0.52 
      2   4  0.91 
      4   3  0.18 
      5   4  0.42 
      3   3  0.21 
+0

우편 번호에 대한 좋은 사용 케이스 – Paul

+0

아주 좋아. j.rjust (11)을 변수 'x'로 잡으려고 시도했지만 그 변수를 인쇄하는 것은 위와 같이 형식화되지 않았습니다. 이견있는 사람? – Ibe

+0

@Ibe,'x = j.rjust (11)'다음에'print x '가 오면 똑같이 작동해야합니다. 올바른 위치에 쉼표가 있는지 확인하십시오. – dansalmo

관련 문제