For문 2개 혹은 3개 이상을 동시에 실행시키기고싶은데 어떻게하나요?

조회수 1930회

for n in [2,0,-2]:

f = int(440*pow(2.,n/12.)+0.5)

freq_of_tones = np.append(freq_of_tones, alone_tone(freq=f,dur=0.3))

for n in [0,2,5]:

j = int(440*pow(2.,n/12.)+0.5)

if n==0:

j=0

freq_of_tones = np.append(freq_of_tones, alone_tone(freq=f,freq1=j,dur=0.3))

pygame_play(freq_of_tones,rate=44100)

코딩 일부분입니다. 두 for문을 위에서부터 차례대로 말고 동시에 실행하고 함께 끝내고싶은데 해결방법좀 부탁드립니다. 악보를 짜고있는데 두 주파수를 합쳐 화음을 넣는 부분입니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 파이썬의 zip(*iterables)을 이용하면 여러 리스트를 한번에 순회할 수 있습니다.

    list1 = [1, 2, 3, 4]
    list2 = [100, 120, 30, 300]
    list3 = [392, 2, 33, 1]
    answer = []
    for i, j, k in zip(list1, list2, list3):
       answer.append( i + j + k )
    

    처럼요. 질문하신 분의 경우에는

    for n1, n2 in zip([2,0,-2], [0,2,5]):
     f = int(440*pow(2.,n1/12.)+0.5) 
     freq_of_tones = np.append(freq_of_tones,
                               alone_tone(freq=f,dur=0.3))    
     j = int(440*pow(2.,n2/12.)+0.5)
     if n2==0:
     j=0
     freq_of_tones = np.append(freq_of_tones,
                               alone_tone(freq=f,freq1=j,dur=0.3))
    pygame_play(freq_of_tones,rate=44100)
    

    같은 형태겠네요~

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

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

(ಠ_ಠ)
(ಠ‿ಠ)