https://s205203.tistory.com/81
저번 시간에 이어서 변숫값의 형태에 대 해어 이어가도록 해보겠습니다.
3. 리스트(list)
- 리스트는 원소의 모음으로써 대괄호로 표현된 일종의 배열(array)이라고 보시면 됩니다.
- []로 둘러 싸서 표현하며 값의 생성, 삭제, 수정 등이 가능합니다.
- 서로 다른 타입의 원소도 안에 넣는 것이 가능합니다.
- 리스트 끼리 안에 리스트를 또 넣는 것도 가능합니다.
리스트를 선언하는 방법
# 리스트
# 1. 데이터의 모음
# 2. []로 둘러싸서 표현
# 3. 값의 생성, 삭제, 수정이 가능
# 리스트 생성
list1 = [1, 2, 3, 4, 5]
list2 = ["a",1,3,"b",4,"c"]
LL = [4, 5, 6, [1, '가', '나']]
리스트 인덱스 & 슬라이스
문자열과 마찬가지로 리스트도 각 위치별로 위치를 가지고 있습니다. 맨 앞이 0으로 시작해서 순차적으로 1씩 상승하게 되는 구조를 가집니다.
리스트의 인덱스 번호
리스트[원하는 위치의 인덱스 숫자]
이런식으로 하게 되면 원하는 문자를 가져오게 될 수 있게 됩니다. 여기서는 a라는 문자열에 "일이삼사오"가 있으니 삼 자리인 2인 덱스를 불러오면 되겠군요! -> a [2]
그렇다면 해당 리스트에서 여러개의 연속된 원소를 가져와야 한다면 어떻게 할까요?
리스트[시작 인덱스 : (끝 인덱스 + 1)]
이런식으로 하게 되면 문자열에서 원하는 연속된 문자들을 가져오게 될 수 있게 됩니다. 만약 b라는 변수에 "12345"라는 문자열이 선언되어있고 거기서 "234"만 가져와야 한다면? b [1:4] -> 4가 있는 위치의 인덱스는 3이지만 4까지 불러와줘야 3까지 가져오게 됩니다.
리스트[-1]
가장 끝에 원소를 가져옵니다.
리스트[내부 리스트 인덱스][인덱스]
해당 리스트 안에 또 리스트가 있을때 그 안에 있는 원소도 가져올 수 있습니다.
# 문자열이랑 기본원리는 비슷함
# 리스트 인덱스
print(list1[1])
# # 리스트 슬라이싱
print(list1[1:4])
print(list1[1:])
# 리스트 안에있는 리스트 슬라이싱
print(LL[-1])
# LL 마지막 원소에 있는 리스트에서 1~2번 인덱스에 있는 원소들 반환
print(LL[-1][1:3])
코드 실행 결과
인덱스, 슬라이싱 코드 실행결과
리스트의 연산과 리스트 값 수정
리스트도 연산과 수정이 가능합니다.
#리스트 연산
print(list1 + list2)
print(list1 * 2)
#리스트의 길이를 반환
print(len(list2))
#리스트 값 수정
number_list = [1, 2, 3, 4, 5]
print(number_list)
#0번 인덱스에 있는 값 수정
number_list[0] = 0
print(number_list)
- + 를 하면 두개의 리스트가 서로 연결
- * 를 하면 한 리스트가 뒤에 숫자만큼 반복
- len()은 리스트의 길이를 반환
- 리스트 인덱스 자리에 새로운 값을 넣으면 해당 인덱스 자리의 값이 변함
코드 실행 결과
파이썬 리스트 연산 코드 실행 결과
리스트 관련 함수
함수 이름 | 문법 | 반환 |
append | 리스트.append(원소) | 기존 리스트에 맨 뒤에 원소를 넣어서반환 |
remove | 리스트.remove(원소) | 해당 원소에 대한 값을 리스트에서 제거 |
insert | 리스트.insert(인덱스,원소) | 해당 인덱스에 원소값 삽입 |
count | 리스트.count(원소) | 해당 원소값의 수를 반환 |
pop | 리스트.pop(인덱스) | 해당 리스트 인덱스의 있는 값을 반환후에 리스트에서 제거 |
extend | 리스트.extend([리스트]) | 해당 리스트 맨 뒤에 리스트값 추가 |
reverse | 리스트.reverse() | 리스트 순서를 뒤집음 |
sort | 리스트.sort() | 리스트에서 값이 낮은 순서대로 정렬함 |
sort | 리스트.sort(reverse=True) | 리스트에서 값이 높은 순서대로 정렬함 |
max | max(리스트) | 해당 리스트에서 가장 큰값을 반환 |
min | min(리스트) | 해당 리스트에서 가장 작은값 반환 |
index | 리스트.index(원소) | 해당 리스트 안에 원소 인덱스 위치를 반환 |
예제 코드
#리스트에 값 추가하기
q = []
print(q)
q.append(3)
print(q)
q.remove(3)
print(q)
q.insert(0,3)
print(q)
print(q.count(3))
print(q.pop(0), q)
q.extend([3,4])
print(q)
a = [2,1,8,10,5,4,3]
a.reverse()
print(a)
a.sort()
print(a)
a.sort(reverse=True)
print(a)
print(max(list1))
print(min(list1))
print(list1.index(5))
실행결과
파이썬 리스트 함수 실행 결과
4. 튜플(tuple)
- 튜플도 리스트와 마찬가지로 데이터의 배열이라고 보면 됩니다.
- 튜플은 리스트와 다르게 ()로 둘러싸서 표현합니다.
- 값의 생성, 삭제, 수정이 불가능합니다.
# 튜플
# 1. 데이터의 모음
# 2. ()로 둘러싸서 표현
# 3. 값의 생성, 삭제, 수정 불가능
t = (1,2,3)
t2 = (1,2,(1,2,3))
# 튜플은 안에 삭제가 안됨
del t[0]
안에 원소를 삭제하려면 오류가 뜬다.
튜플의 연산과 인덱스, 슬라이싱
리스트와 동일해서 코드만 올리도록 하겠습니다.
#튜플 연산
print(t+t)
print(t*3)
print(len(t))
# 튜플 인덱스
print(t[1])
# 튜플 슬라이싱
print(t[1:3])
print(t[1:])
# 튜플 안에 있는 튜플 슬라이싱
print(t2[-1])
print(t2[-1][1:3])
실행 결과
튜플 인덱스 코드 실행결과
튜플 관련 함수
튜플은 변경이 불가능한 특징을 가지고 있기 때문에 append나 extend나 상태를 변환시키는 함수를 활용할 수 없습니다.
함수 이름 | 문법 | 반환 |
max | max(튜플) | 해당 튜플에서 가장 큰 값을 반환 |
min | min(튜플) | 해당 튜플에서 가장 작은 값을 반환 |
index | 튜플.index(원소) | 해당 튜플안에 원소의 인덱스 값을 반환 |
print(max(t))
print(min(t))
print(t.index(1))
실행 결과
튜플 함수 실행 결과
5. 딕셔너리
- 딕셔너리는 튜플과 리스트처럼 순차적인 값을 가지는 데이터의 모음이 아니라 key와 value로 된 대응 관계를 나타내는 자료형입니다. 그래서 값을 구할 때 index를 활용하지 않고 key를 통해 value를 얻습니다.
데이터 구조: {"키":"벨류"}
ex) "phone" : "010-1234-1234" -> 해당 키값은 phone이고 value값은 010-1234-1234입니다.
# 딕셔너리
# 1. key와 value로 된 대응 관계를 나타내는 자료형
# 2. 리스트나 튜플처럼 순차적인 값으로 value를 구하지 않고 Key를 통해 Value를 얻는 방식
dic = {'shop_name':'치킨치킨',
'phone':'010-1234-1234',
'price': 23000,
"chicken_list" : ["양념치킨", "후라이드치킨"]}
각각의 값 리스트를 보는 법
아래의 코드를 통해서 딕셔너리가 가지는 키나 벨류 값을 확인할 수 있습니다.
#키 값을 보는 함수
print(dic.keys())
#벨류값을 보는 함수
print(dic.values())
#키, 벨류를 페어로 얻는 함수
print(dic.items())
실행결과
딕셔너리 key value 함수 실행결과
특정한 key값의 value를 가져오고 싶다면?
딕셔너리를 다루면서 특정한 키값의 벨류만 가져와야 할 때가 있습니다. 이럴 땐 아래의 코드와 같은 방식으로 가져오시면 됩니다.
#이런식으로 키값으로 value를 가져옴
print(dic['shop_name'])
print(dic.get('phone'))
실행결과
딕셔너리 벨류값 가져오기 예제
딕셔너리에 값 추가하기
딕셔너리에 새로운 키 벨류 값을 추가하고 싶다면 아래의 코드를 통해서 추가가 가능합니다.
딕셔너리[키] = 벨류
#기존 딕셔너리 출력
print(dic)
#딕셔너리에 값추가하기
dic['manager'] = '요리사'
print(dic)
실행결과
딕셔너리에 원소추가하기 예제
6. boolean과 논리 비교 연산자
boolean타입은 참이냐 거짓이냐의 명제에 따른 리턴 값으로 True/False를 가집니다.
이때 보통 비교, 논리 연산자와 같이 사용됩니다.
예를 들어 3!= 2는 3과 2는 같지 않다는 명제인데요. 이건 참이니 return값은 True일 것입니다. 여기서 True값을 boolean값으로 보시면 되겠습니다.
파이썬 비교 연산자
기호 | 기능 | 문법 |
== | 같다 | a==b |
!= | 같지않다. | a != b |
> | 왼쪽이 오른쪽보다 크다 | a > b |
< | 오른쪽이 왼쪽보다 크다 | a < b |
>= | 왼쪽이 오른쪽보다 크거나 같다. | a >= b |
<= | 오른쪽이 왼쪽보다 크거나 같다. | a <= b |
파이썬 논리 연산자
기호 | 기능 | 문법 |
and | 조건이 둘다 참이여야한다. | (조건1) and (조건2) |
or | 조건이 둘중 하나만 참이여도 된다. | (조건1) or (조건2) |
not | 괄호안에 조건이 거짓이여야 한다. | not(조건1 and 조건2) |
# 참 거짓을 나타내는 값 true/false
#같다 ==
print(3==3)
#같지 않다 !=
print(3!=3)
# 크다: > , 크거나 같다: >=
print(3 > 3, 3 >= 3)
# 작다: < , 작거나 같다: <=
print(3 < 3, 3 <= 3)
#둘다 참이여야함
print((3 != 2) and (2 == 2))
#둘중 하나만 참이여도 됨
print((3 != 2) or (2 != 2))
#괄호 안에 조건이 참이 아니여야 함
print(not((3 != 2) and (2 == 2)))
실행결과
boolean 실행 결과
7. 집합(set)
집합은 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형으로 두 가지 특징을 가지고 있습니다.
1. 중복을 허용하지 않는다.
2. 순서가 존재하지 않는다.
# 집합: 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형
# 1. 중복을 허용하지 않는다.
# 2. 순서가 없다
q1 = set([1,2,3,1,2,5,4,6])
q2 = set([7,8,3,9,10,5,4,6])
print(q1)
print(q2)
실행결과
print 해보니 중복이 제거되었다.
각각 집합 별 연산
교집합(interscetion): 두 집합 사이에 공통된 원소만 반환
합집합(union): 두 집합사이에 모든 원소를 반환(중복 시 중복은 제거됨)
차집합(difference): a-b일 때 a집합에서 b집합에 있는 원소가 제거돼서 나옴
#교집합
print(q1 & q2)
print(q1.intersection(q2))
#합집합
print(q1 | q2)
print(q1.union(q2))
#차집합
print(q1 - q2)
print(q1.difference(q2))
실행결과
각 집합 연산 코드 실행결과
집합에서 값을 추가 제거하는 법
# 값 추가
q1.add(99)
print(q1)
#값 제거
q1.remove(99)
print(q1)
#값 맨 뒤에 추가
q1.update([99,88,77])
print(q1)
실행 결과
집합에 값을 추가/제거 하는 법
여기까지 파이썬의 자료 형태에 대해서 알아봤습니다. 다음 시간에는 if나 for문을 통한 흐름 제어를 어떻게 하는지에 대해서 알아보도록 하겠습니다.
[출처] https://kbkb456.tistory.com/66?category=1021504
'Python' 카테고리의 다른 글
[배열] Python 문자열 배열 입력받기 (0) | 2022.09.17 |
---|---|
[기초] Python 조건문,반복문,할당연산자(if,elif,else,for,while,break,continue,range) (0) | 2022.09.17 |
[기초] Python 변수값의 형태 (0) | 2022.09.17 |
[기초] Python 변수 선언하기 (1) | 2022.09.17 |
크롤링 실행시 에러 (0) | 2022.08.12 |