[프로그래밍 기초][파이썬]11. 리스트 더 알기 -1(리스트 연산, 중첩리스트, 메쏘드, 순서정렬)
안녕하세요 HiCreate입니다!!!
이번 포스팅에서는 리스트에 대해 알아보도록 하겠습니다.
1편에서는....
1. 리스트 연산하기
2. 중첩 리스트
3. 리스트의 메쏘드
4. 순서 정렬하기
를 알려드리고
2편에서는...
5. 반복 참조하기
6.리스트 내장 (List Comprehension)
7. 순차적 정수 리스트
를 알려드리고
8. 지역적 리스트
9. 명령행 인수 처리
10. 배열 표현하기
11. 디렉토리 파일 목록
는 3편에서 알려드리도록 하겠습니다.
1. 리스트 연산하기
리스트는 변수명 = [1번,2번] 형식으로 씁니다.
리스트는 시퀀스 자료형이자 변경 가능 자료형인데요.
그래서
인덱싱, 슬라이싱, 연결, 반복, 멤버십 테스트 등을 모두 할 수 있습니다.
첫번째로 알려드릴건 range 함수가 뭐냐입니다.
range(숫자) 는 0부터 숫자-1까지의 리스트를 만들어 줍니다.
그리고 공 리스트라는게 있는데요
비어있는 리스트라는 겁니다.
l=[] 형식으로 사용할 수 있습니다.
값 변경은 l=[1,2,3]에서
l[2] = l[2]+30 처럼 하면
3번째에 있는 3이 33으로 바뀐 걸 볼 수 있습니다.
리스트는 슬라이스를 한 뒤 값을 바꿀 수도 있습니다.
l[0:2] = [0,1] 처럼 말이죠 이러면 첫번째, 두번째 값이 0,1로 바뀌어 있습니다.
마찬가지로 삭제도 가능합니다
슬라이스를 한 뒤 공 리스트로 만들어 주는 거죠.
l[0:2]=[]
또는 del l[0]형식으로 삭제할 수도 있죠.
추가를 할때도 마찬가지로
l[1:1]=[2,3]
2. 중첩 리스트
1 2 3 | s = [1,2,3] l = [0,s,4] print(l) | cs |
위의 코드처럼 리스트 안에 리스트가 있는 것을 중첩 리스트라고 부릅니다.
결과는 [0,[1,2,3],4] 로 나오고요.
3. 리스트 메쏘드
리스트도 문자열처럼 메쏘드가 있습니다.
1 2 3 4 5 6 7 8 9 10 11 | s = [1,2,3] print(s.append(5)) # 끝부분에 자료 추가 print(s.insert(3,4)) # 3위치에 4 추가 print(s.index(3)) # 값 3의 위치 검색 print(s.count(2)) # 값 2의 개수 print(s.reverse()) # 순서를 거꾸로 뒤집음 ([5,4,3,2,1]) print(s.sort()) # 리스트를 작은 수에서 큰 수로 정렬 print(s.remove(1)) # 값 1 삭제 print(s.pop()) # 가장 최근에 추가된 값을 출력한뒤 삭제 print(s.extend([0,1])) # 리스트 추가 | cs |
위의 코드를 실행하면 None이 출력하는 게 몇가지 있는데요,
이는 그 함수는 리턴 값(반환 값)을 가지지 않고 수행만 하기 때문입니다.
이걸 해결하기 위해서는 다음 코드를 사용합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | s = [1,2,3] print(s.append(5)) # 끝부분에 자료 추가 print(s, '\n') print(s.insert(3,4)) # 3위치에 4 추가 print(s, '\n') print(s.index(3)) # 값 3의 위치 검색 print(s.count(2)) # 값 2의 개수 print(s.reverse()) # 순서를 거꾸로 뒤집음 ([5,4,3,2,1]) print(s, '\n') print(s.sort()) # 리스트를 작은 수에서 큰 수로 정렬 print(s, '\n') print(s.remove(1)) # 값 1 삭제 print(s, '\n') print(s.pop()) # 가장 최근에 추가된 값을 출력한뒤 삭제 print(s, '\n') print(s.extend([0,1])) # 리스트 추가 print(s, '\n') |
이런 식으로 리스트를 따로 출력해주면 값이 나오는 거죠.
4. 리스트로 순서 정렬
위에서 알려드린 sort() 함수(메쏘드)를 사용하면 간편하게 정렬할 수 있습니다만,
리턴 값이 없습니다.
이외에 cmp() 라는 내장함수가 있는데요
이는 cmp(1번 값, 2번값)으로 사용이 가능합니다.
'1번 값 > 2번 값' 일때 양수(1)을 출력하고,
'1번 값 = 2번 값' 일때 0을,
'1번 값 < 2번 값' 일때 음수(-1)을 출력합니다.
key인수는 무엇일까요?
문자열을 비교할때 sort()함수는 크기에 상관없이 정렬을 해버립니다.
그런데 key인수를 사용하면 크기에 따라 정렬을 하죠.
1 2 3 4 5 6 7 8 | s = ['23','145','1','900'] s.sort() # 크기 상관 없이 정렬(맨 처음 수에 따라 정렬하는 듯) print(s) s.sort(key = int) # key가 int이므로 정수 일때 크기대로 정렬 print(s) | cs |
이런 식으로 하면
['1','145','23','900']
['1','23','145','900']
이라고 출력됩니다.
이 외에 sorted라는 게 있는데요.
위에서도 말씀드렸듯이 sort 함수는 리턴 값이 없습니다.
그런데 sorted 함수는 새로 만들어진 리스트를 리턴 값으로 돌려줍니다.
1 2 3 4 5 | s = [1,5,3,9,7,0] l = sorted(s) print(l) print(s) # 단, 원래 리스트 유지 | cs |
1 2 3 4 | s = [1,5,3,9,7,0] for l in reversed(s): print(l) print(s) # 단, 원래 리스트 유지 |
reversed는 for문과 함께 사용하여 분해해버립니다.
이처럼 1편인데도 굉장히 다양한 것을 했네요.
다음 포스팅에서 반복 참조, 리스트 내장, 순차적 정수 리스트에 대해 알려드리겠습니다.
혹시 리턴에 대해 궁금하신 분은 조금만 기다려 주세요 ㅎㅎ
리스트가 끝나면 리턴과 스택에 대해 알려드리겠습니다.
그럼 긴 글 읽어주셔서 감사합니다!!!