본문 바로가기

PYTHON

[Python] list, tuple, dictionary

리스트,튜플,딕셔너리!

1. List (리스트 자료형)

 

리스트는 배열과 흡사합니다.

a = []
b = [1,2,3,4]
c = ['hi','hongni','Lee', 'hello']
d = [7,8,['hongni','hello']]

리스트 안에는 여러가지 자료형을 담을 수 있습니다.

 

리스트 slice를 할 수도 있습니다.

print(b[-1]) # 4
print(c[-2]) # Lee
print(d[-1][0]) # hongni

리스트 인덱싱은 다음과 같이 할 수 있습니다.

# List 값 수정
test = [1, 2, 3, 4, 5]
test[3] = 6

print(test)  # [1, 2, 3, 6, 5]

이렇게 인덱스를 지정해서 직접 값을 바꿔줄 수 있습니다.

# List 연속된 값으로 변경
test = [1, 2, 3, 4, 5]
test[2:3] = ['a', 'b', 'c']

print(test)  # [1, 2, 'a', 'b', 'c', '4', '5']

2이상 3미만의 인덱스 부분에 a,b,c List를 변경해주는 것입니다.

# List 요소 삭제
test = ['a', 'b', 'c', 'd', 'e']
test[2:4] = []

print(test)  # ['a', 'b', 'e']
# del 함수 사용
test = ['a', 'b', 'c', 'd', 'e']
del test[2]

print(test)  # ['a', 'b', 'd', 'e']

del 함수를 사용해서 삭제할 수도 있습니다.

test = ['a', 'b', 'c', 'd', 'e']
del test[2:4]

print(test)  # ['a', 'b', 'e']

인덱스를 범위로 지정하는 것 또한 가능합니다.

 

리스트 내장함수들 

test = [1, 2]
test.append(3)  # 맨 뒤에 값 추가
print(test)  # [1, 2, 3]

append(x) 함수는 인자를 1개밖에 받지 않기 때문에 여러개의 인자를 넘겨줄 경우 에러가 납니다.

test = [3, 1, 2, 5, 4]
test.sort()
print(test)  # [1, 2, 3, 4, 5]

test.sort(reverse=True)
print(test)  # [5, 4, 3, 2, 1]

sort() 함수는 List를 자동으로 정렬해줍니다. 역순으로 정렬하기 위해서는 sort 함수에 reverse 옵션을 True로 설정해주면 됩니다.

test = [3, 1, 2]
test.reverse()
print(test)  # [2, 1, 3]

reverse() 함수는 현재의 List를 역순으로 뒤집어 줍니다. 정렬은 하지 않고 현재의 List를 역순으로 뒤집어 줍니다.

test = [1, 2, 3, 4, 5]
print(test.index(3))  # 2
print(test.index(5))  # 4

index(x) 함수는 x 라는 값이 있는 경우 , x 의 인덱스를 반환해주는 함수입니다.

test = [1, 2, 3, 4, 5]
test.insert(0, 6)
print(test)  # [6, 1, 2, 3, 4, 5]

insert(x, y) 함수는 x 위치에 y 라는 값을 삽입해주는 함수입니다.

test = [1, 2, 3, 4, 3]
test.remove(3)
print(test)  # [1, 2, 4, 3]

remove(x) 함수는 첫 번째로 나오는 x 라는 값을 List에서 삭제해주는 함수입니다. 보시다시피 뒷부분에 있는 3은 삭제되지 않았습니다.

test = [1, 2, 3]
print(test.pop())  # 3
print(test)        # [1, 2]

pop() 함수는 List의 가장 마지막 인덱스의 값을 반환해주고 그 값을 삭제해주는 함수입니다. 위의 예제에서 굳이 3이라는 값이 필요없을 경우에는 print() 함수를 빼도 상관없습니다.

test = [1, 2, 3, 1, 1]
print(test.count(1))  # 3

count(x) 함수는 x 라는 값이 List 안에 몇 개나 있는지 반환해주는 함수입니다.

test = [1, 2, 3]
test.extend([4, 5, 6])
print(test)  # [1, 2, 3, 4, 5, 6]

extend(x) 함수는 x 부분에 List를 받아서 원래의 List와 병합시켜주는 함수입니다.

len() 함수로 리스트값들의 개수를 얻을 수 있습니다.

 

 

 

2. Tuple (튜플 자료형)

 

리스트와 튜플은 거의 동일합니다.

리스트는 [] 대괄호로 묶이지만 튜플은 ()소괄호로 묶입니다.

tp1 = ()
tp2 = (1,)
tp3 = (1, 2, 3, 4, 5)
tp4 = (1, 2, (3, 4, 5))
tp5 = 1, 2, 3

튜플의 선언은 다음과 같이 할 수 있습니다. 리스트와 거의 비슷하지만 다른 점이 조금 있습니다. 1개의 요소만을 가질때 튜플은 tp2 와 같이 뒤에 반드시 콤마(,) 가 와야합니다. 또한 tp5 처럼 괄호를 생략해도 된다는 점입니다.

튜플과 리스트의 차이점은 이뿐만이 아닙니다. 튜플과 리스트의 가장 큰 차이점은 튜플은 값을 변경할 수 없다 입니다. 리스트는 항시 값의 변화가 가능하지만 튜플은 불가능합니다. 그래서 값의 변화를 원하지 않는 리스트의 경우에는 튜플로 선언하는 것이 바람직 합니다.

tp1 = (1, 2, 3)
tp2 = (4, 5, 6)

print(tp1[2])     # 3
print(tp1[1:])    # (2, 3)
print(tp1 + tp2)  # (1, 2, 3, 4, 5, 6)
print(tp2 * 2)    # (4, 5, 6, 4, 5, 6)

3. Dictionary (딕셔너리 자료형)

 

딕셔너리는 키=값 형태로 이루어진 자료형입니다. 이렇게 대응 관계를 나타내는 자료형을 연관 배열 혹은 Hash라고 합니다. 대표적인 예로는 루비의 Hash와 C#의 Dictionary가 있습니다.

dic1 = dict()
dic2 = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
dic3 = dict([('name', 'L3opold7'), ('phone', '010-1234-5678')])
dic4 = dict(firstname='Myungseo', lastname='Kang')
dic5 = {'ls': ['a', 'b', 'c']}

print(dic2)               # {'k1': 'v1', 'k3': 'v3', 'k2': 'v2'}
print(dic2['k2'])         # v2
print(dic3)               # {'phone': '010-1234-5678', 'name': 'L3opold7'}
print(dic3['name'])       # L3opold7
print(dic4)               # {'firstname': 'Myungseo', 'lastname': 'Kang'}
print(dic4['firstname'])  # Myungseo
print(dic5['ls'])         # ['a', 'b', 'c']


빈 Dictionary를 만들땐 dict() 함수를 사용하면 됩니다. 물론 내용이 있는 Dictionary를 만들 때 사용해도 됩니다! 그리고 value 값을 호출할 때는 Dictionary이름[‘키값’] 으로 호출하게 되면 값을 얻을 수 있습니다. 또한 Dictionary의 값으로 List도 넣을 수 있다.

test = {1: 'first'}
test[2] = 'second'

print(test)  # {2: 'second', 1: 'first'}

Dictionary는 간단하게 키값을 지정해주고 추가해주면 됩니다.

test = {1: 'first', 2: 'second', 3: 'third'}

del test[2]
print(test)  # {1: 'first', 3: 'third'}

삭제는 List에서 사용했듯이 del() 함수를 사용하면 됩니다.

test = {'name': 'hongni', 'nickname': 'lee', 'birthday': '1126'}
print(test.keys())    # dict_keys(['name', 'nickname', 'birthday'])
print(test.values())  # dict_values(['hongni', 'lee', '1126'])
print(test.items())   # dict_items([('nickname', 'lee'), ('name', 'hongni'), ('birthday', '1126')])

keys(), values() 함수를 통해서 딕셔너리의 key 혹은 value를 dict_keys 혹은 dict_values 객체로 얻을 수 있습니다. items() 함수는 key와 value를 Tuple을 사용해서 묶은 값을 dict_items 라는 객체로 반환해줍니다.

test = {'name': 'hongni', 'nickname': 'lee', 'birthday': '1126'}
test.clear()
print(test)  # {}

clear() 함수를 이용해서 모두 지워버릴 수 있다!

test = {'name': 'hongni', 'nickname': 'lee', 'birthday': '1126'}

print(test.get('no_key'))  # None
print(test.get('name'))    # hongni
print(test['name'])        # hongni
print(test['no_key'])      # Error

test[‘no_key’] 의 경우에는 Error를 내뱉지만 test.get(‘no_key’)는 None 객체를 반환하기 때문에 get(x, y) 함수를 쓰는 것이 더 적절해보입니다. get(x, y) 함수는 Dictionary 안에 x 라는 키 값이 없을 경우 y 라는 디폴트 값을 반환해줍니다.

test = {'name': 'hongni', 'nickname': 'lee', 'birthday': '1126'}

print('name' in test)    # True
print('no_key' in test)  # False

 

출처 : https://blog.leop0ld.org/posts/python-basic-grammar1/