1) List : 순서대로, 중복허용,원소 변경 가능
2) Tuple : 순서대로 , 중복허용, 원소 변경 불가능
3) dictionary : 순서 x, key-value형태, value는 중복된 값을 저장가능 그러나 key는 중복될 수 없음
4) Set: ,순서 x, 핵심은 중복을 허용하지 않는다는 것, 집합의 개념
#조회
index
t2 = (10,20,30,40,50,60)
#양수/음수 index
t2[0] -> 10
t2[5],t2[-1] -> 60,60
#범위 조회
t2[1:5] -> 20,30,40,50
t2[1:-2] -> 20,30,40
#새로운 튜플
t1 = (3,4,5)
t1 = (1,2)
t1 > (1,2) #튜플의 값이 바뀐 것이 아니라, 새로운 튜플로 바뀐 것
(value, value, value, ...)
(value,)
또는 value,
,
를 붙여준다. ,
를 붙이지 않으면 ( )가 연산자 우선순위 괄호가 된다.
# 생성
t1 = (10,20,30,40,50) # ()로 감싼다.
print(type(t1))
t2 = 10,20,30,40,50,60 # ()생략 가능
print(type(t2))
t3 = (10,5.2,True,"abc") # 다른 타입들을 모을 수 있다.
t4 = 10,5.2,True,"abc"
print(type(t3), type(t4))
#값 뒤에, 붙이기
t5 = (30) > int type
t6 = (30,) > tuple type
리스트와 동일(tuple[index])하지만 튜플은 조회만 가능, 변경 불가
원소 조회 메소드
index
count(값)
예)
t = (1,2,3,4,1,2,1,2,1,1,1)
t.count(1)
-> 6
t.index(2,4) #2의 index를 조회, index 4부터 찾아라
-> 5
예)
print(t2[0])
print(t2[5],t2[-1])
예)
t1 = (1,2)
t1 #튜플의 값이 바뀐 것이 아니라, 새로운 튜플로 바뀐 것
예) 범위 조회
t2[1:5]
예)
v1, v2, v3 = 10, "A", 5.7 #변수 순서에 맞춰 대입
print(v1,v2,v3)
{ 키 : 값, 키 : 값, 키 : 값 }
customer_info = {"name" :"홍길동",
"age" : 20,
"nickname" : "박명수",
"email": "abc@abc.com",
"address" : "서울",
"hobby" :['게임', '스포츠']}
#KEY는 중복 허용 안함. VAlUE는 중복 허용함.
d = {"name":"홍길동","nickname": "홍길동"}
d2 = {"name":"홍길동", "name" : "유재석", "name":"박명수"}
->{'name': '박명수'}
#같은 key가 들어가면 마지막에 추가된 것만 남는다.(변경)
dictionary[ key ] = 값
있는 key값에 값을 대입하면 변경이고 없는 key 일 경우는 새로운 item을 추가하는 것
#이름
customer_info["name"]
# 추가/변경
## 추가 - item 추가
cutomer_info["tall"] = 182.33 #추가 :없는 키 = 값
cutomer_info
```
"홍길동" in customer_info -> False #value가 있는 지 확인 불가
# in,not in은 key 가 있는지/없는지 여부
"name" in customer_info -> True
customer_info =
{'name': '홍길동',
'age': 20,
'nickname': '박명수',
'email': 'abc@abc.com',
'hobby': ['게임', '스포츠']}
customer_info.get("name")
customer_info.get("weight", -1) #-1 : default값(weight키가 없으면 반환할 값을 설정)
#반환하면서 제거
v = customer_info.pop("address") #address의 값을 반환하면서 제거
print(v)
customer_info
#제거
del customer_info['email'] #삭제만
customer_info
customer_info.keys() #key값들만 모아서 반환
customer_info.values() #value들만 모아서 반환
customer_info.items() #key, value를 튜플로 묶어서 반환
customer_info.clear()
s2 = {1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,5,5,5,5}
s2 #중복을 허용하지 않아 unique value만 남긴다
>{1, 2, 3, 4, 5}
s2[0] #개별 원소 조회 불가(식별자=index가 없음)
in, not in 연산자
len(Set)
1 in s2,10 in s2 > (True,False)
s2.add(6)
s2.update([10,20,30,40])
v = s2.pop()
s2.remove(20)
s2.remove(1000) # 없는 값 삭제 -> 예외(exception) 발생
집합A - 집합B
집합A.difference(집합B)
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
#합집합
set3 = set1 | set2
set4 = set1.union(set2)
#교집합
set5 = set1 & set2
set6 = set1.intersection(set2)
# 차집합
set7 = set1 - set2
set8 = set1.difference(set2)
변경할 대상이 Dictionary 일 경우에는 key값들만 모아서 변환
#v = [1,1,1,1,2,2,3,3,3,4,4,4,4,4,4,5,5,2,1]
v = (1,1,1,1,2,2,3,3,3,4,4,4,4,4,4,5,5,2,1)
# v가 무슨 값들로 구성되었는지 확인 - set => list를 set으로 변환
set(v) >{1,2,3,4,5}
t =(1, 2, 3, 4, 5)
#t에 100을 추가 : tuple -> list로 변환 후 값추가 -> tuple
l = list(t)
l.append(100)
t = tuple(l)
list("안녕하세요.") #문자열 : 문자를 모아놓은 iterable
> ['안', '녕', '하', '세', '요', '.']
r = "배 사과 귤 수박 복숭아".split() #띄어쓰기 기준으로 분할
> ['배', '사과', '귤', '수박', '복숭아']
"-".join(r)
#"합칠 때 사용할 구분문자열".join(리스트) -> 리스트이 문자열 원소들을 하나의 문자열로 합친다
>'배-사과-귤-수박-복숭아'