파이썬 중급 3일차(4)

김영목·2021년 7월 31일
0

파이썬중급

목록 보기
6/18

만약 우리가 어떤 사람들을 특정 랭크와 번호에 따라 분류시키고 싶다면 그리고 그러한 것들에 대해서 각 원소들이 의미하는 것이 무엇인지 나태내고 싶다면 어떻게할까??

이럴때 쓰는 것이 for문, range, namedtuple이다.
이러한 목표를 실행하기 위해서는 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)]


profile
안녕하세요 김영목입니다.

0개의 댓글