쿨가이두번째삶

파이썬(python)공부3 리스트(list), 튜플(tuple), 세트(set) 본문

개발,coding/Python파이썬

파이썬(python)공부3 리스트(list), 튜플(tuple), 세트(set)

쿨가이두번째삶 2022. 11. 20. 22:17
728x90
반응형

리스트(list)

 #리스트는 숫자 순서대로 관리하는 박스

ex1)

list = ['python', 'java', 'html']

print(list[0])

>>python

 

ex2)

print(list[2])

>>html

 

 순서대로 부분을 잘라서 리스트 할 수 있다

ex)

list=['python', 'java', 'html']

print(list[0:2])  #print(list[:2]) 같은 값이다

>>['python', 'java', 'html']

 

어떤 값이 있는지 알아보려면

ex)

list=['python', 'java', 'html']

print('java' in list)

>>True     #찾고자 하는 값이 있는지 결과는 불리안(true/faluse)으로 나타낸다

 

리스트 안에 몇 개의 값이 있는지 확인

ex)

list=['python', 'java', 'html']

print(len(list)

>>3 

 

리스트 안의 값을 수정하려면

ex)

list=['python', 'java', 'html']

list[0]='C언어'  #'0'번째 리스트 값을 변경

print(list)

>>['C언어', 'java', 'html']

 

리스트 젤 뒤에 새로운 값을 추가하려면

ex)

list=['python', 'java', 'html']

list.append('C언어')   #리스트 젤 뒤에 새로운 값을 추가

print(list)

>>['python', 'java', 'html', 'C언어']

 

리스트 안에서 특정값을 삭제하려면

ex)

list=['python', 'java', 'html']

list.remove('html'))   #특정값 삭제

print(list)

>>['python', 'java']

 

기존 리스트에 새로운 리스트 값을 추가하려면

ex)

list=['python', 'java', 'html']

second_list=['C#', 'C++']

list.extend(second_list) #기존 리스트에 다른 리스트를 추가

print(list)

>>['python', 'java', 'html', 'C#', 'C++']

메서드 정의
insert() 원하는 위치에 값 추가
pop() 원하는 위치(또는 마지막)의 값 삭제
clear() 모든 값 삭제
sort() 값 순서대로 정렬
reverse() 순서 뒤집기
copy() 리스트 복사
count() 어떤 값이 몇 개 있는지
index() 어떤 값이 어디에 있는지

 

 

튜플(tuple)

리스트(list)와 같이 값들을 박스에 넣고 관리하지만 둘의 차이점은

list = [특정값 1, 특정값 2,...]   #리스트는 [ ] 

tuple = (특정값 1, 특정값 2,...)  #튜플은 ( )

 

리스트(list) vs 튜플(tuple)
'리스트(List)'와 '튜플(Tuple)'의 큰 차이점은 

리스트는 안에 값을 얼마든지 추가 또는 삭제, 수정할 수 있다
튜플은 값을 수정할 수없다. 즉, 읽기 전용 리스트인 셈이다



튜플 = (특정값 1, 특정값 2,...)

tuple = ('python', 'java', 'html')

tuple = ('python', 'java', 'html', 'python', 'C++')  #중복도 할 수 있다

tuple =  (0, 7, 1.77, awesome, '뭐든지')  #이것저것 다 넣을 수 있다

 

인덱스 숫자 순서에 해당하는 값은

tuple = ('python', 'java', 'html', 'python', 'C++')

print(tuple[1])

>>java

 

원하는 부분만 출력하려면

tuple =  ('python', 'java', 'html', 'python', 'C++')

print(tuple[0:3])  #print(tuple[:3] 와 같은 값이다

>>('python', 'java', 'html')

 

특정값이 포함되어 있는지 확인하려면

tuple =  ('python', 'java', 'html', 'python', 'C++')

print('java'in tuple)

>>true    #특정값이 포함되어있는지는 불리안(True, Faluse)으로 나타낸다

 

리스트 값이 총 몇 개 있는지 길이 확인을 하려면

tuple =  ('python', 'java', 'html', 'python', 'C++')

print(len(tuple))

>>5

 

메서드 정의
count() 어떤 값이 몇 개 있는지
index() 어떤 값이 어디에 있는지

 

 

튜플은 리스트와 마찬가지로 패킹, 언패킹을 할 수 있다

 

tuple =  ('python', 'java', 'html')  # 패킹이라고 정의한다

('a', 'b', 'c') = tuple #언패킹이라고 정의한다

즉, 

a = 'python'

b = 'java'

c = 'html'

 

언패킹에서는 *(asterisk)을 사용할 수 있다

ex)

numbers = (1, 2, 3, 4, 5, 6, 7)

(one, two, *others) = numbers   # '1'은 'one'에 '2'는 'two'에 나머지는 'others'에 넣으라는 뜻이다

print(others) 

>>[3,4,5,6,7]

'others'는 튜플이 아닌 리스트(list)의 형태로 변환된다

 

순서도 바꿀 수 있다

numbers = (1, 2, 3, 4, 5, 6, 7)

(*others, six, seven) = number

'others'는 '1,2,3,4,5'  'six'는 '6', 'seven'는 '7'에 넣어진다

 

numbers = (1, 2, 3, 4, 5, 6, 7)

(one, *others, seven) = numbers 

'one'은 '1'에 'others'에는 '2,3,4,5,6', 'seven'은 '7'이 넣어진다

 

 

 

 

세트(set)

리스트(list), 튜플(tuple)과 같이 여러 개의 data를 저장할 수 있는데 

세트(Set)의 특징은, 값들의 순서가 보장되지 않고, 중복이 안된다

 

각각 패킹 안에 있는 값들의 '교집합'되는 값을 찾을 때

A = {'삼겹살', '목살', '등갈비'}

b = {'살치살', '등심, '등갈비'}

print(A.intersection(b))

>>{'등갈비'}

 

각각 패킹 안에 있는 값들의 '합집합'을 구할 때

A = {'삼겹살', '목살', '등갈비'}

b = {'살치살', '등심, '등갈비'}

print(A.union(b))

>>{'살치살', '등갈비', '목살', '삼겹살', '등심'}   #순서가 보장되지 않기 때문에 출력할 때마다 값이 변한다

 

 

세트(Set) vs 리스트(List), 튜플(Tuple)

'세트'가 '리스트, 튜플'과 다른 큰 차이점은 
순서가 보장되지 않기 때문에 인덱스를 사용해서 원하는 값을 낼 수가 없다

 

각각 패킹에서 특정 리스트의 '차집합'을 구할 때

A = {'삼겹살', '목살', '등갈비'}

b = {'살치살', '등심, '등갈비'}

print(A.difference(B))

>>{'삼겹살', '목살'}

 

'세트(Set)'는 '튜플(Tuple)'과는 달리 읽기 전용이 아니다, 패킹 값을 수정할 수 있다

ex1) #특정값을 추가할 때

set = {'python', 'java', 'html'}

set.add('C#')

print(set)

>>{'python', 'java', 'html', 'C#'} 

 

ex2) #특정값을 뺄 때

set = {'python', 'java', 'html'}

set.remove('html')

print(set)

>>{'python', 'java'}

 

ex3) #패킹 안의 값을 전부 지울 때 

set = {'python', 'java', 'html'}

set.clear()

print(set)

>>set()

 

메서드 정의
copy() 세트 복사
discard() 값 삭제(해당 값이 없어도 에러 발생X)
isdisjoint() 두 세트에 겹치는 값이 없는지 여부
issubset() 다른 세트의 부분집합인지 여부
issuperset() 다른 세트의 상위집합인지 여부
update() 다른 세트의 값들을 더함

 

 

 

728x90
반응형