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을 가리키려면 어떻게 해야 할까요? d3번째 요소에서 또다시 첫 번째인 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']]


python study

 

 

4.1.2.3 리스트 값 변경

                

리스트 내의 값을 변경 하려면 인덱스를 사용 하면 됩니다.

리스트 dd = [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를 반환합니다리스트 내부의 리스트를 찾는 경우에도 valuelist를 넣어주면 인덱스가 반환 됩니다.

 

>>> 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 -


+ Recent posts