파이썬 다중 FOR 문(3중?)

조회수 4003회
first = ['a', 'b', 'c', 'd', 'e' ] 
second = ['x', 'y', 'z' ] 
third = ['apple', 'banana' ] 
N = 10

위에 리스트들을 활용해서 For문으로 N번 반복 하고 싶습니다.

아무리 생각해도 답이 안나오네요. ㅠ 아래처럼 하면 first까진 되는데 나머지도 대입하고 싶은데..


for i , j in enumerate(first*2):
    i = i + 1
    print(i, j)

ex) 이렇게 나오게 하고 싶습니다.

1: a, x, apple 
2: b, y, banana 
3: c, z, apple 
4: d, x, banana
5: e, y, apple 
6: a, z, banana
7: b, x, apple
8: c, y, banana
9: d, z, apple
10: e, x, banana
  • (•́ ✖ •̀)
    알 수 없는 사용자

3 답변

  • 3중으로 안 해도 충분히 되네요..!

    first = ['a', 'b', 'c', 'd', 'e' ] 
    second = ['x', 'y', 'z' ] 
    third = ['apple', 'banana' ] 
    N = 10
    
    for i in range(N) :
        print("%s: %s, %s, %s" % (i + 1, first[i - (i//5)*5], second[i - (i//3)*3], third[i - (i//2)*2]))
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
  • itertools 를 사용하는 방법도 있습니다.

    참고해보세요.

    >>> first = ['a', 'b', 'c', 'd', 'e' ]
    >>> second = ['x', 'y', 'z' ]
    >>> third = ['apple', 'banana' ]
    >>> N = 10
    >>> from itertools import cycle, islice
    >>> for v1, v2, v3 in zip(islice(cycle(first), N), islice(cycle(second), N), islice(cycle(third), N)):
    ...     print(v1, v2, v3)
    ... 
    a x apple
    b y banana
    c z apple
    d x banana
    e y apple
    a z banana
    b x apple
    c y banana
    d z apple
    e x banana
    
  • 와우 감사합니다. :-)

    저는 결국 zip 을 써서 풀긴 했는데 이게 더 명확한 답인 것 같네요!

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • zip을 써서 푸신 건 어떻게 푸셨는지 공유 가능하실까요? 알 수 없는 사용자 2017.11.20 07:14
    • ziptest = list(zip(first, second, third)) 로 하였는데 각 변수값에 N개가 나오도록 곱해주었습니다. 매번 N개를 곱해줘야 하는 번거로움이 있더라구요, 알 수 없는 사용자 2017.12.10 18:45

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)