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
'PYTHON' 카테고리의 다른 글
[Python / 파이썬] 파이썬에서 정규표현식 사용하기 (0) | 2019.07.18 |
---|---|
[Python 파이썬] __getitem__() 를 이용한 튜플의 리스트, 리스트의 리스트 다루기 (Handling List of Tuples, List of Lists) // 리스트 안에 튜플 (0) | 2019.07.17 |
[Python] 문자열에 문자열 리스트의 요소가 포함되어 있는지 찾기 (0) | 2019.07.16 |
[Python] 리스트 컴프리헨션 알아보기 (0) | 2019.07.16 |
[Python] 파이썬 형변환 하기 (0) | 2019.07.12 |