IT/프로그래밍

[파이썬] 파이썬 심화 리스트 내포 [패스트 캠퍼스 챌린지 25일]

뜻밖의 행복 2022. 2. 17. 20:50
반응형

 

안녕하세요? 뜻밖의 행운입니다.

 

패스트 캠퍼스 챌린지 25일차 

정말로 딱 절반 왔습니다. 

파이썬 강의도 열심히 들었구요 

근데 확실히 강의를 듣기만 해서 끝낼 것이 아니라 많이 써야 

제 자신의 것이 되는게 느껴지네요 

영어회화도 똑같고 이런 개발언어 공부도 똑같은듯 합니다.

아무튼 뿌듯함과 보람을 느껴가며 열심히 계속해서 공부를 해나가겠습니다.

오늘은 리스트 내포에 대해서 배웠습니다.

기존 리스트에는 그냥 데이터를 직접 입력하여 할당하였다면

이번에는 조건식을 이용해서 리스트에 데이터를 추가하거나 

변경하는 것에 대해서 배웠습니다. 

 

역시 이런 기술이 나온것도 불필요한 반복을 줄이고 

복잡해질 수 있는 코딩을 간편하게 하여 가독성을 높히기 위해서 입니다. 

 

리스트 내포라는 단어 보다는 그냥 사용법을 보면서

아 이런식으로 쓰는 거구나 라고 보는 것이 훨씬 도움이 된다고 하니 

그냥 보도록 하겠습니다.

 

숫자라는 nums 리스트에 0~100까지 할당한다고 생각해보겠습니다.

nums = [0,1,2,3,4,5 중략 99, 100] 엄청난 반복 잡을 해야 합니다. 

직접 입력하다보니 인간은 실수를 하니 숫자 하나가 빠져 있을 수도 있구요

 

이럴 때 

nums = [i for i in range(101)]

위와 같은 형태로 for 문을 이용하여 할당하면 입력해야 할 숫자도 줄어들고 

다른 사람이 보기에도 이해가 훨씬 쉽습니다. 

 

실제로 잘 들어가는지 볼까요?

 

네 아주 잘 동작하죠?

nums2 = [100, 200, 300]

만약 위 리스트에 할당된 내용들을 각각 2배씩 해야 한다면 어떻게 해야 할까요?

for 문을 이용해서 별도로 돌린다면 여러줄 코딩을 해야 합니다.

줄이 늘어난다는 것은 또 그만큼 가독성이 늘어난다는 것이니까요

nums2 = [100, 200, 300]
double_nums = [i * 2 for i in nums2]

네 그냥 위 처럼 리스트 내포를 이용 하면 한줄에 가능합니다.

기존 리스트의 데이터를 읽어와서 2배를 한다고 리스트 안에 적어주면 됩니다.

 

네 nums2 에 있던 100, 200, 300이 간편하게 200, 400, 600으로 변환되어 출력되는 것을 볼 수 있습니다.

여기서 더 응용을 하면

nums3 = [i for i in range(10) if i % 2 == 0]

위 처럼 if 문 까지 추가하여 특정 조건도 줄 수 있습니다. 

i % 2 == 0 이라는 것은 2로 나누었을 때 나머지가 0 이라는 것으로

2로 딱 나누어 떨어지는 짝수라는 것을 알 수 있습니다.

 

이렇게 생각대로 동작을 잘 하니까 뿌듯합니다.

nums4 = [100, 200, 300, 400, 500]
double_nums2 = [i * 2 for i in nums4 if i >= 300]

그렇다면 위는 무슨 내용일까요?

이제 해석이 되기 시작하면 많이 배운거네요 ㅎ

nums4에 들어있는 데이터 중에서 300 이상의 데이터만 2를 곱해서 저장한다는 것이겠네요 

한번 맞나 볼까요?

 

네 생각대로 잘 됩니다.

 

방문자 분들도 생각한대로 일이 잘 풀리시길!

 


참고 사이트 :



반응형