📖 UNIT 22. 리스트와 튜플 응용하기
📒리스트에 요소 추가하기
대표적인 리스트를 다루는 기능 세개를 알아보자.
- append : 요소 하나를 추가
- extend : 리스트를 연결하여 확장
- insert : 특정 인덱스에 요소 추가
정도 있다.
먼저 리스트에 요소 하나를 추가해보자.
a = [10, 20, 30, 40]
a.append(100)
이 결과를 확인해보도록 하자.
리스트에 100이 들어가짐을 확인할 수 있다. 그럼 길이를 알아보자.
len 함수를 이용하여 길이를 구할 수 있다. 마지막 인덱스는 len(a)-1 이겠다.
리스트 안에는 리스트를 또 추가할 수 있다.
a = [10, 20, 30, 40, 100]
a.append([500,600])
이렇게 리스트 안에 리스트가 또 들어가짐을 확인할 수 있다.
리스트안의 리스트도 하나의 요소로만 판단을 한다. 그래서 len 함수를 사용하여도 요소의 갯수로만 판단이 된다.
리스트는 확장할 수도 있다.
리스트에 여러개의 요소들을 넣고 싶다면, append()함수를 여러번 사용하여도 되지만 그 갯수가 많아진다면 매우 번거로워진다는 단점이 있다. 이를 해결하기 위해 여러 요소들을 한번에 넣을 수 있는 extend()함수가 존재한다.
a = [10, 20, 30]
a.extend([500,600])
이 코드를 실행해보자.
예상한대로 출력이 된다. 인자로 넘긴 리스트는, 그 안의 요소들만 a리스트에 추가되었다. 한 개씩 추가된것이 아니라 함수명이 extend이지 않을까 조심스레 유추해볼 수 있다. append와 마찬가지로 리스트도 추가시킬 수 있다.
리스트의 특정 인덱스에 요소를 추가시킬 수 있다.
a = [10, 20, 30]
a.insert(2, 500)
이 코드를 실행시키면 idx=2인 30의 위치에 500이 들어가지고 30은 다음으로 밀려나간다
딩동댕동 !!@!@!@!2
리스트안에 리스트를 위와 같이 insert하는 것도 가능하다.
리스트의 특정한 요소를 없애기도 가능하다.
📒리스트에 요소 제거하기
- pop : 특정 인덱스 또는 마지막 요소 제거
- remove : 특정 값을 찾아서 제거
리스트에서 특정 인덱스를 찾아 제거해보자.
a = [10, 20, 30]
a.pop()
위 명령을 실행해보자.
위와같이 출력된다. pop을 실행하게 되면 가장 마지막 요소가 뭔지 알려주고, 사라진다.
pop에 인자를 넣어주면, 그 인덱스에 해당하는 값이 사라지게 된다. pop대신 del을 사용해도 된다.
a = [10, 20, 30]
del a[1]
위와 같이 코딩할 수도 있다.
리스트에서 특정 값을 찾아 제거헤보자.
a = [10, 20, 30, 40]
a.remove(20)
위와 같이 코딩한다면 리스트에서 20이라는 값을 찾아서 지운다. 만약 리스트에 20이 두개가 있다고 하더라도, 가장 먼저 찾은 20이라는 값을 제거한다.
이러한 특징을 이용하여 리스트로 스택과 큐를 구현할 수도 있다.
이정도로 마무리하자.
📒기타
이외에도 파이썬에서 유용하게 쓰이는 함수를 찾아보자
- 특정값의 인덱스를 구한다 : a.index()
- 특정값의 갯수를 구한다 : a.count()
- 순서를 뒤집는다 : a.reverse()
- 요소 정렬하기 : a.sort(reverse=False) : 오름차순
- 모든 요소 삭제 : a.clear()
📒리스트의 할당과 복사 알아보기 ( 꽤 중요한 내용임 !!!!! )
할당과 복사의 차이가 뭘까 .....
a = [1, 2, 3, 4, 5]
b = a
b[1] = 20
이런 코드가 있다고 해보자. a와 b는 서로 독립적인 관계일까 ?
즉, b에서 값을 바꾸면 그것이 a에도 영향이 갈까 ? (양자얽힘과 비슷한 개념인가 ㅎㅎ)
결론적으로 말하자면, 얽혀있다. 우리가 단순히 b=a 코드를 작성하면 b에서 이루어지는 작업들은 모두 a에도 영향을 미친다.
a와 b의 id는 같다. 그말은 즉 b=a를 해버리면 b는 그냥 a의 id값을 가져가는 것이다.
리스트가 아닌 일반 변수의 경우에는 b의 값을 바꾸었을 때 그 얽힘이 깨지게 된다.
아마 리스트의 경우 요소를 바꾸더라도 전체적으로는 a를 참조했지만, 그런게 아닌 경우 아예 다른 값이 되어버리기 때문인 것 같다.
그럼 a와 독립된 b를 만들기 위해서 어떻게 해야 할까. 바로 copy 메서드를 사용해야 한다.
a = [1,2,3,4,5]
b = a.copy()
a is b
요 코드를 실행해보자
False가 출력된다. 즉 복사된 요소들은 같지만 아예 다른 리스트로 만들어졌다는 소리이다.
📒숫자놀이
- 최솟값 : min(a)
- 최댓값 : max(a)
- 합계 : sum(a)
📒리스트에 map 사용하기
a에 모든 요소를 int로 바구고 싶다면 map을 사용하자.
a = [1.1, 2.2, 3.3, 4.4, 5.5]
a = list(map(int, a))
위와 같은 방법이면 a내의 모든 요소들을 정수로 변환해준다.
응용해보자.
a, b = map(int, input().split())
위와 같이 코드를 작성하게 된다면 띄어쓰기로 구분하여 입력한 두 숫자가 각각 a와 b에 들어가게 될 것이다.
📒튜플
리스트와 같으므로 생략.
'스터디 그룹 > ProjectH4C' 카테고리의 다른 글
ProjectH4C 1개월 2주차 과제 (UNIT 24) (0) | 2021.01.28 |
---|---|
ProjectH4C 1개월 2주차 과제 (UNIT 23) (0) | 2021.01.27 |
ProjectH4C 1개월 2주차 과제 (UNIT 19, 20, 21) (0) | 2021.01.25 |
ProjectH4C 1개월 2주차 과제 (UNIT 16, 17, 18) (0) | 2021.01.23 |
ProjectH4C 1개월 2주차 과제 (UNIT 13, 14, 15) (0) | 2021.01.23 |