Python中級3日目(4)


もし私たちが特定のランキングと番号に従って分類し、これらについて、各要素を怠ることが何を意味するかを考えたいなら、どうすればいいのでしょうか.
このときはfor mun、range、namedtupleを使います.
これらの目標を達成するには,まず第1の方法から2つの方法がある.
1번 방법

student_num = [str(i) for i in range(1,21)]
rank = 'A B C D'.split()
# 여기서 알아야 하는 점은 split()함수는 해당 원소들을 새로운 리스트에 담는다.

Sort_func = namedtuple('sort', 'rank, num')

Sort1 = [sort('rank', 'num') for i in rank ,for k in student_num]

위처럼 반드시 리스트로 묶고 for문을 돌려줘야한다
만일 아래의 경우처럼 하면 오류가 발생한다.

Sort1 = [sort('rank', 'num')]
for i in rank :
	for k in student_num :
    	rank = i
        num = k
        
이런 식의 코드는 에러가 난다. 그리고 제대로 된 결과를 찍어보면 아래와 같다. 
[Classes(rank='A', number='1'), Classes(rank='A', number='2'), Classes(rank='A', number='3')]

2번 방법
위와 같이 

변수명 = [네임드튜플명(인자1, 인자2) for1 for2]

이러한 형식으로 줄지어 작성하면 코드 가독성에 있어 문제가 생길 수 있다. 
그리고 rank , student_num처럼 변수들을 만들고 namedtuple을 사용하면 
코드의 길이가 길어지는 단점도 존재한다. 

그래서 다음과 같은 방법을 사용하는 것도 추천된다.

Sort1 = [sort('rank','num') 
	for rank in 'A B C D'.split() 
        for num in [str(n) for n in range(1,21)]