4. 자료구조(집합, 리스트, 튜플)
4.1 리스트
4.1.1 리스트 만들기
단순히 1개의 숫자, 1개의 문자, 1개의 문자열일 수도 있지만 그보다는 숫자들의 집합, 문자들의 집합을 하나로 묶어놓은 변수의 개념입니다.
>>> one = [1] >>> a = [1, 2, 3, 4, 5] >>> b = ['a', 'b', 'c', 'd'] >>> ab = [1, 2, 3, 4, 5, 'a', 'b', 'c', 'd'] >>> c = [1, 2, 'apple', 'banana'] >>> d = [1, 2, [3, 4], ['apple', 'banana'], True, False] |
이런 방식으로 꼭 동일한 자료형 으로 리스트를 표현하지 않고 여러 자료형을 혼합되어 생성 하거나 리스트에 리스트를 포함하여 사용 가능 합니다.
리스트에 리스트를 요소로 추가해서 표현도 가능 합니다.
>>> a = [1, 2, 3, 4, 5] >>> b = ['a', 'b', 'c', 'd'] >>> ab = [a, b] >>> print(ab) [[1, 2, 3, 4, 5], ['a', 'b', 'c', 'd']] |
4.1.2 리스트 인텍싱
4.1.2.1 리스트 값 꺼내기
리스트에 들어있는 각각의 값들을 구별해 사용하기 위하여 첫 번째, 두 번째, 세 번째… 이런식으로 번호를 부여해야 하는데 이것을 인덱싱이라고 하며 0부터 시작을 합니다. 즉, 첫 번째가 0, 두 번째가 1… 이렇게 순서가 정해 집니다.
d = [1, 2, [3, 4], ['apple', 'banana']]
여기에서 d[0]은 1, d[1]은 2가 되며 리스트에 리스트가 포함되어도 하나의 요소로 처리 됩니다..
d[-1]은 맨 마지막 값인 [“apple”, “banana”]으로 d[3]과 동일 합니다.
그럼 apple을 가리키려면 어떻게 해야 할까요? d의 3번째 요소에서 또다시 첫 번째인 d[3][0] 또는 d의 맨 마지막 요소 내의 첫 번째인 d[-1][0] 하면 됩니다.
>>> d = [1, 2, [3, 4], ['apple', 'banana']] >>> print(d[0], d[1], d[-1], d[3][0], d[-1][0]) 1 2 ['apple', 'banana'] apple apple |
4.1.2.2 리스트 값 추가
- append()
리스트에 값을 추가하려면 append()를 이용하여 값을 정해주면 됩니다.
d.append(6) 이렇게 하면 d의 맨 마지막에 6이 추가 되고 d.append(['a','b']) 하면 새로운 리스트 [‘a’, ‘b’]가 마지막에 추가 됩니다.
>>> d = [1, 2, [3, 4], ['apple', 'banana']] >>> print(d[0], d[1], d[-1], d[3][0], d[-1][0]) 1 2 ['apple', 'banana'] apple apple >>> d = [1, 2, [3, 4], ['apple', 'banana']] >>> d.append(6) >>> print(d) [1, 2, [3, 4], ['apple', 'banana'], 6] >>> d.append(['a','b']) >>> print(d) [1, 2, [3, 4], ['apple', 'banana'], 6, ['a', 'b']] |
- 덧셈
덧셈 기호를 이용하여 리스트에 리스트를 더하여 정의 할 수 있습니다.
>>> a = ['apple', 'banana'] >>> a = a + a >>> >>> print(a) ['apple', 'banana', 'apple', 'banana'] >>> b = [1, 2, 3, 4] >>> a = a + b >>> print(a) ['apple', 'banana', 'apple', 'banana', 1, 2, 3, 4] |
- 곱셈
곱셈 기호를 이용하여 리스트에 상수를 곱하여 정의 할 수 있습니다. 곱하는 정수 만큼 리스트가 복제 되어 추가 됩니다.
>>> a = ['apple', 'banana'] >>> a = a * 3 >>> print(a) ['apple', 'banana', 'apple', 'banana', 'apple', 'banana'] |
- insert()를 이용 중간에 추가
insert(index, value)를 이용하여 리스트의 원하는 위치에 값을 추가 할 수 있습니다. 파라미터로 index는 추가할 리스트 요소의 순서를 말하고 value는 그 위치에 삽입할 값입니다.
리스트의 두 번째 요소(index가 1인) 위치에 값을 삽입해 보겠습니다.
>>> d = [1, 2, [3, 4], ['apple', 'banana']] >>> d.insert(1, ["b", "c"]) >>> print(d) [1, ['b', 'c'], 2, [3, 4], ['apple', 'banana']] |
4.1.2.3 리스트 값 변경
리스트 내의 값을 변경 하려면 인덱스를 사용 하면 됩니다.
리스트 d를 d = [1, 2, [3, 4], ['apple', 'banana'], 6, ['a', 'b']] 와 같이 선언 하였을 때 d[1] = 7은 인덱스 값이 1인 요소의 값을 7로 변경 하고 d[-1] = 9하면 리스트의 마지막에 있는 리스트 [‘a’, ‘b’]가 9로 변경 됩니다.
리스트 내부에 있는 리스트의 값을 변경 하는 경우 d[3][0] = "orange"하면 ‘app’e’이 ‘orange’로 변경 됩니다.
>>> d = [1, 2, [3, 4], ['apple', 'banana'], 6, ['a', 'b']] >>> d[1] = 7 >>> print(d) [1, 7, [3, 4], ['apple', 'banana'], 6, ['a', 'b']] >>> d[-1] = 9 >>> print(d) [1, 7, [3, 4], ['apple', 'banana'], 6, 9] >>> d[3][0] = "orange" >>> print(d) [1, 7, [3, 4], ['orange', 'banana'], 6, 9] |
4.1.2.4 리스트 값 삭제
- del
리스트 항목의 삭제는 del 명령을 이용 합니다. del d[1] 하면 리스트의 index값이 1인 두 번째에 있는 요소가 삭제 됩니다.
>>> d = [1, 7, [3, 4], ['orange', 'banana'], 6, 9] >>> del d[1] >>> print(d) [1, [3, 4], ['orange', 'banana'], 6, 9] |
- remove()
리스트에서 index의 위치가 아닌 값을 찾아서 삭제하는 방법은 remove()를 사용 합니다. remove(value)에서 value는 삭제하려는 값을 입력하면 리스트 index 순으로 제일 처음에 나오는 값을 찾아서 삭제 합니다.
>>> c = [1, 2, 3, [1, 2, 3], 1, 2, 3] >>> c.remove(3) >>> print(c) [1, 2, [1, 2, 3], 1, 2, 3] >>> c.remove(3) >>> print(c) [1, 2, [1, 2, 3], 1, 2] |
리스트 내부에 있는 3의 값은 삭제가 되지 않고 마지막 3이 삭제 되었습니다. 리스트 내부의 리스트에 있는 값을 삭제하려면 리스트위치의 인덱스에서 다시 한번 인덱스를 사용합니다.
>>> print(c) [1, 2, [1, 2, 3], 1, 2] >>> c[2].remove(3) >>> print(c) [1, 2, [1, 2], 1, 2] |
4.1.2.5 기타 기능
- len()
len()을 이용하여 리스트의 길이를 구합니다. len(list 명)으로 사용하며 전체 index 값을 반환 하며리스트내의 리스트도 1개로 계산합니다.
>>> c = [1, 2, 3, [1, 2, 3], 1, 2, 3] >>> cnt = len(c) >>> print(cnt) 7 >>> len(c) 7 |
- index()
index()를 이용하면 리스트 내부의 값에 해당하는 인덱스를 구할 수 있습니다. index(value)의 value에 찾으려는 값을 넣어주면 index를 반환합니다. 리스트 내부의 리스트를 찾는 경우에도 value에 list를 넣어주면 인덱스가 반환 됩니다.
>>> c = [1, 2, 3, [1, 2, 3], 1, 2, 3] >>> c.index(3) 2 >>> c.index([1,2,3]) 3 |
- pop()
리스트의 마지막 값을 꺼내고 그 마지막 값을 삭제하는 경우 pop()을 사용합니다.
>>> c = [1, 2, 3, [1, 2, 3], 1, 2, 3] >>> c.pop() 3 >>> print(c) [1, 2, 3, [1, 2, 3], 1, 2] |
pop(index)를 사용하면 index 값을 이용하여 꺼내올 요소의 위치를 정하고 그 요소 삭제 할 수 있습니다. 중간에 있는 리스트[1, 2, 3]을 꺼내고 삭제해 보겠습니다.
>>> c = [1, 2, 3, [1, 2, 3], 1, 2, 3] >>> c.pop(3) [1, 2, 3] >>> print(c) [1, 2, 3, 1, 2, 3] |
- reverse()
리스트 내부의 index 순서를 반대로 뒤집어 값이 역순으로 재배열 됩니다.
>>> c = [1, 2, 3, [1, 2, 3], 1, 2, 3] >>> print(c[0]) 1 >>> c.reverse() >>> print(c) [3, 2, 1, [1, 2, 3], 3, 2, 1] >>> print(c[0]) 3 |
리스트 내부의 리스트 요소 값들은 변경되지 않습니다. 이걸 뒤집으려면 인덱스를 사용해야 합니다.
>>> print(c) [3, 2, 1, [1, 2, 3], 3, 2, 1] >>> c[3].reverse() >>> print(c) [3, 2, 1, [3, 2, 1], 3, 2, 1] |
- sort()
리스트의 값들을 오름차 순으로 정렬해 줍니다. 동일한 자료형만 처리가 가능 합니다.
>>> c = [5, 2, 7, 1, 9, 3, 4] >>> c.sort() >>> print(c) [1, 2, 3, 4, 5, 7, 9] >>> a = ['a','z','c'] >>> a.sort() >>> print(a) ['a', 'c', 'z'] |
- 슬라이싱
리스트의 index를 이용하여 필요한 부분 만큼 값을 뽑아오는 방법입니다.
a[1:3] : index 값이 1보다 크거나 같고 3 미만(1<= a[index] < 3)
a[:3] : index 값이 처음부터 3 미만( a[index] < 3)
a[3:] : index 값이 3보다 크거나 같은 값(3 <= a[index])
>>> a = [1, 2, 3, 4, 5, 6, 7] >>> print(a[1:3]) [2, 3] >>> print(a[:3]) [1, 2, 3] >>> print(a[3:]) [4, 5, 6, 7] |
- copy coding -
'Tensorflow > Python' 카테고리의 다른 글
Python 기초 학습 5 제어문 (0) | 2019.03.12 |
---|---|
Python 기초 학습 4-2 자료구조 (튜플, 함수, 딕셔너리) (0) | 2019.03.09 |
python 기초 학습 3 연산자 (0) | 2019.03.01 |
python 기초 학습 2 (데이터 형, 변수) (0) | 2019.02.26 |
python 기초 학습 1 (0) | 2019.02.25 |