더보기

리스트 사용 예시 

참고 1 데이터 추출 대상

참고 2 데이터 추출에 사용된 리스트, 딕셔너리

참고 3 데이터 csv 추출 결과

참고 4 자연어 딥러닝

 

 

프로그램이란?

프로그램 데이터와 로직만으로 이루어져 있다.

로직은 컴퓨터가 동작하는 순서이고, 이 과정에 따라 데이터를 저장, 수정, 삭제, 생성하는 과정이 복잡해질 뿐이다.

데이터는 현실에서 여러가지 형태로 존재하고, 이를 프로그래밍에서 데이터는 자료형(Data Type) 이라는 형태로 구분하여 관리한다. 관리의 목적은, 프로그래밍의 편리성을 위해서다.

 

 

1. 리스트

더보기

1.1 리스트란?

변수는, "하나의 값을 저장할 수 있는 저장공간"을 의미했습니다.

리스트는, 여러개의 데이터를, 자료형 구분 없이, 한 번에 저장해 사용하는 것입니다.

개발자가 편리하게

# 변수의 사용과, 리스트의 사용 비교 (1)

# 변수의 경우
name1 = '민준' 
name2 = '서준' 
name3 = '도윤' 
name4 = '예준'

# 리스트의 경우
lst_names = ['민준' '서준' '도윤' '예준']


# 변수의 사용과, 리스트의 사용 비교 (2)

# 변수의 경우
num = 11 
str = '문자열' 
flt = 3.14 

# 리스트의 경우
lst_types = [11, '문자열', 3.14]

 

 

1.2 리스트 자료형 사용법

리스트를 만드는데 사용될 모든 데이터들을 [ ] (대괄호)로 묶고, 각 요소들을 ,(콤마)로 구분한다.

# 리스트를 사용하는 방법(1) - 기본

lst1 = [1, 2, 3, 4, 5]

print(lst1)
# 리스트를 사용하는 방법(2) - 여러가지 자료형 저장하기

num = 123
one = 1
str_num = "456"
bol = True # 변수

lst2 = [0, "Second", 2, f'index {one + 2}', num, str_num, bol, True, False]

print(lst2)
# 리스트를 사용하는 방법(3) - 중첩 리스트 만들기
# 가능하다는 의미, 굳이 중첩 사용 할 이유가 없다.

inner_list = ["web", "App", "AI"]
nested_list = ['Python', 'C', 'Java', 'C#', inner_list]

lst3 = ["PL Language", [1,2,3,4], nested_list]

print(lst3)
# 리스트를 사용하는 방법(4) - 빈 리스트 만들기

lst4 = []

print(lst4)

 


 

# 연습문제 1 

# 연습문제 1 

# '월', '화', '수', '목', '금' 을 weekday 리스트 변수명으로 출력하세요.
# '토', '일' weekend 리스트 변수명으로 출력하세요.

# 실행결과 예시
# 평일은 ['월', '화', '수', '목', '금'], 주말은 ['토', '일']

 

 

# 연습문제 2

# 연습문제 2
# 문자열 1개, 정수 1개, 실수 1개, boolean 1개, list 1개를 각각 변수를 만들고 
# 하나의 리스트에 담아 출력하세요

# 실행결과 예시
# ['ABC', 99, 3.14, True, False, ['Temp', 'Test', 100.0]] 비슷하게 출력할 것

 

 

# 연습문제3

# 연습문제 3
# 빈 리스트를 변수를 선언하고, 
# boolean 자료형 판정 결과를 출력해보세요.

# tip.
# bool() 함수를 사용하세요.

 

 

# 연습문제 4 - 인적사항

# 연습문제 4
# '민준' '서준' '도윤' '예준' '시우' '하준' '주원' '지호' 
# 22 32 11 52 31 73 21 14
# 이름과 나이 데이터를 2개의 리스트로 만들어 출력하세요.

# 실행결과 예시
# 학생 이름은 ['민준', '서준', '도윤', '예준', '시우', '하준', '주원', '지호'], 
# 나이는 [22, 32, 11, 52, 31, 73, 21, 14]

 

 

# 연습문제 5 - 박스오피스

순위 영화명 개봉일 관객수 매출액
1 범죄도시3 2023.05.31 2,817,238 28,691,377,096
2 가디언즈 오브 갤럭시: Volume 3 2023.05.03 91,092 948,372,092
3 포켓 몬스터 DP: 아르세우스 초극의 시공으로 2009.12.24 71,834 673,827,181
4 분노의 질주라이드 오어 다이 2023.05.17 66,678 679,037,060
5 인어공주 2023.05.24 65,486 658,858,972
6 슈퍼 마리오 브라더스 2023.04.26 23,776 235,181,685
# 연습문제 5
# 순위, 영화명, 개봉일, 관객수, 매출액 리스트 변수를 만들어 모두 출력하세요.

 

2. 리스트 요소 접근법

:복합 자료형의 데이터를 다루는 방법

더보기

2.1 index란?

 

프로그래밍에서 인덱스(Index)란, 복합 자료형의 각 요소를 구분하고 식별하는 기준입니다.


일반적인 변수의 경우, 변수명 자체가 중복되지 않으며, 하나의 데이터를 고유하게 식별하고 참조합니다.

 

그러나 **복합 자료형(예: 배열, 리스트, 문자열 등)**에서는 하나의 변수명 아래 여러 데이터가 포함되기 때문에, 변수명만으로는 각 데이터를 구분할 수 없습니다.


이때, 인덱스를 사용하여 각 요소를 구분하고 접근합니다. 즉, 인덱스는 복합 자료형 안의 데이터를 식별하고 참조하기 위한 위치 정보라고 할 수 있습니다.

 

 

2.2 리스트 index 사용 방법

# 리스트의 요소를 index를 사용해 접근하는 방법(1) 

# 학생 이름 리스트를 기준으로
# 리스트변수명[index] 를 사용해 각 요소의 데이터에 접근 가능하다.

lst_name = ['민준', '서준', '도윤', '예준', '시우', '하준', '주원', '지호']

print(lst_name[0])

# 실행결과 예시
# 민준
# 리스트의 요소를 index를 사용해 접근하는 방법(2)

flt = 2.1
num = 4

lst_nums = [3.14, 10, 5, flt, num]


print(lst_nums[1] * num) # 10 * 4 = 40

print(lst_nums[0] * lst_nums[3]) # 3.14 * 2.1 = 6.594

 

 

2.3 문자열 index, 리스트 index, 현실의 데이터 테이블 구조 비교

 

문자열 예시

 

리스트 1

 

리스트 2

 

리스트 3

 

엑셀(출석부)

 

 

2.4 len( ) 함수

 

len( ) 함수는 순차sequence 특성을 갖는 복합자료형의 요소 개수를 반환한다.

문자열과 리스트의 요소 개수를 반환한다.

# len( ) 함수 사용법(1)
# 요수의 개수(길이)를 구하는 방법

print(len("hello py"))
print(len( [ 11, 22, 33, 44, 55, 66 ] ))

lst = [ 11, 22, 33, 44, 55, 66 ]
lst_cnt = len(lst)
print(lst_cnt)

# len( ) 함수 사용법(2)
# 마지막 index 구하는 방법

last_idx = (len(lst) - 1)
print(f"{lst=} 리스트의 길이는 {lst_cnt}, 마지막 인덱스는 {last_idx}입니다.")

 

 

2.5 index( ) 함수

 

리스트 요소의 특정 위치 찾기

0번 index부터 최초로 나타나는 위치를 반환합니다.

# index( )함수 사용 방법(1)

lst_name = ['민준', '서준', '도윤', '예준', '시우', '하준', '주원', '지호']
name = '시우'
pos = lst_name.index(name)
print(f'{name} 학생은 {pos+1}번 입니다.')
# index( )함수 사용 방법(2)

lst_age = [ 22, 33, 55, 11, 22, 33, 66]

age = 22

pos = lst_age.index(age, 3) # index가 3이상부터 찾습니다.

print(f"{age}살 학생의 번호는 {pos+1}입니다.")

 

 

2.6 리스트의 특정 요소 변경

: index로 요소에 접근하여 값을 변경한다.

lst_name = ['민준', '서준', '도윤', '예준', '시우', '하준', '주원', '지호']
name = '시우'
pos = lst_name.index(name)

lst_name[pos] = 'Richard'

print(lst_name)

 


 

# 연습문제 5

# 연습문제 5

# '민준' '서준' '도윤' '예준' '시우' '하준' '주원' '지호' 
# 22 32 11 52 31 73 21 14
# 176 180 161 171 190 165 170 169
# 77 88 65 85 100 70 67 59

# 위 데이터를 각각 4개의 리스트로 만들고
# len() 함수를 사용해 길이를 출력하세요.

 

# 연습문제 6

# 연습문제 6
# 각 리스트의 2번째, 5번째 index 값을 전부 출력하세요.

 

# 연습문제 7

# 학생 번호를 1개를 입력받으세요.
# 그리고 입력받은 번호를 (입력값-1)을 index 로 활용해 이름, 나이, 키, 몸무게를 모두 출력하는 로직을 만드세요.

 

# 연습문제 8

번호 국어 성적 영어 성적 수학 성적
1 55 65 91
2 87 80 67
3 43 77 77
4 98 91 89
# 연습문제 8

# 국어성적, 영어성적, 수학성적 리스트 3개를 만들고
# 번호를 입력 받으면,
# 번호에 해당하는 학생의 국어, 영어, 수학 성적 평균을 출력하도록 로직을 구성하세요.

 

# 연습문제 9

# 연습문제 9

# 국어성적, 영어성적, 수학성적 리스트 3개를 만들고
# 입력값을 받아, 과목을 식별하고
# 과목별 평균을 출력하도록 로직을 구성하세요.

#tip 
#idx = sub.index("국어") 
#avg_list[idx] # >> 국어평균점수 출력

 

# 연습문제 10

# 연습문제 10

# 태양, 수성, 금성, 지구 , 화성, 목성, 토성, 천왕성, 해왕성, 지구
# 태양계 행성의 리스트를 만들고, 
# 입력받은 행성이 몇 번째 행성인지 출력하도록 구현하세요.

# tip
# index() 함수를 사용하세요.

# 실행예시
# ['태양', '수성', '금성', '지구', '화성', '목성', '토성', '천왕성', '해왕성', '지구'] 중에 위치를 확인할 행성은 어디인가요?
# 행성 입력 >> 지구
# 지구 행성은, 태양에서 3 번째에 위치하고 있습니다.

 

# 연습문제 11

# 연습문제 11

# 화성을 "Mars", 해왕성을 "Neptune" 문자열로 변경하여 출력하세요.

 

3. range( ) 함수와 list( ) 함수

range( ) 내장함수 공식문서

더보기

3.1 범위를 표현하는 방법에 대하여

* 범위를 표현하는데 필요한 값은?
1)시작 숫자

2)마지막 숫자

3)증감 숫자

 

예시 1)

0 <= x <  10
증감 숫자가 생략되었다면, 증감 숫자는 1 이다.

 

예시 2)
0 , 10 이라는 시작과 마지막을 의미하는 숫자의 옆에 비교 연산자가 생략되었다면,

시작 숫자의 비교연산자는 이상 (<=),

마지막 숫자 미만(<) 의 범위를 의미한다.

 

예시 3)
시작 숫자가 생략되었다면, 시작 숫자는 항상 0 이다.

 

예시 4)
마지막 숫자는 인간의 관점에서 "반복 횟수" 를 의미하는 것이 일반적이다.

 

 

 

 

3.2 range( ) 함수 사용법

range( ) 함수는, 파이썬 내장 함수로, 순차적인 수치값을 만드는데 사용되는 함수다.

 

range(시작 숫자, 마지막 숫자, 증감폭)

range(시작 숫자, 마지막 숫자)
range(숫자 미만)

# 경우1

range(시작 , 마지막 , 증감)   # range( ) 함수 사용
lst_var[시작 : 마지막 : 증감] # list 슬라이싱


# 경우2

range(시작 , 마지막)
lst_var[시작 : 마지막]


# 경우3

range( 마지막 )
lst_var[ : 마지막 ]


# 경우4

# range( , 마지막 , 증감) # 이건 안됨
lst_var[ : 마지막 : 증감]
lst_name = ['민준', '서준', '도윤', '예준', '시우', '하준', '주원', '지호']

# 방법1
print(range(0, 10, 1))
print(lst_name[0:4:1])

# 방법2
print(range(0, 10))
print(lst_name[0:6])

# 방법3
print(range(10))
print(lst_name[ :8])

# 방법4
# print(range( , 10, 1))
print(lst_name[ :8:2])

 

 

 

 

3.3 list( ) 함수 사용법

list( ) 내장 함수는 리스트를 받아서 복사본을 생성하여 반환한다.

# range( )함수와 list( ) 함수 사용법(1)

lst_range1 = list(range(0, 10, 1))
print(lst_range1)


# range( )함수와 list( ) 함수 사용법(2)

gap = 6
lst_range2 = list(range(0, 10*gap, gap))
print(lst_range2)

 


 

# 연습문제 12

# 연습문제 12
# 위 3가지 range() 함수 사용 방법을 모두 사용하여
# -10 ~ 10 까지 21개의 요소를 가진 리스트를 만들어 출력하세요

 

# 연습문제 13

# 연습문제 13
# 위 range( ) 함수 설명을 참고하여, 아래와 같이 3의 배수 5개가 포함된 리스트를 출력하세요.

# 실행결과 >> [3, 6, 9, 12, 15]

 

# 연습문제 14

# 연습문제 14

# range() 함수를 사용하고
# 정수 1개를 입력받아 
# 증감폭이 3 인 연속된 정수 10개가 포함된 리스트를 출력하세요.

 

# 연습문제 15

# 연습문제 15

# range() 함수를 사용하고
# 정수 1개를 입력받아 
# 아래와 같이 출력되도록 구현하세요.

# 실행결과 예시
# 정수를 입력하세요>> 7
# [0, 7, 14, 21, 28, 35, 42]

# tip
# 증감폭이 입력받은 정수만큼인 연속된 정수
# 리스트 요소의 개수는 입력받은 정수의 개수만큼

 

# 연습문제 16

# 연습문제 16
# 정수 1개를 입력받고
# max = 10 변수를 이용하여
# 입력받은 정수의 1단~9단까지 구구단을 출력하세요

# 실행결과 예시
# 몇 단을 출력할까요? 3 
# 3단 출력:  [3, 6, 9, 12, 15, 18, 21, 24, 27]
weight = int(input('몇 단을 출력할까요? '))
max = 10
lst = list(range(weight, (max*weight) ,weight))
print(f"{weight}단 출력: ",lst)

 

④ 리스트 요소 추가 

더보기
  • append(요소): 리스트의 맨 끝에 요소 하나를 추가
  • insert(인덱스, 요소): 특정 인덱스 위치에 요소 추가
  • extend(요소): 리스트를 연결하여 확장
lst = [273, 32, "문자열", True, [22, 33, "AB"]]
print(lst)

lst[len(lst):] = ["Slicing Add"]
print(lst)

lst[3:] = ["Additional"]
print(lst)

 

 


 

# 연습문제 17

순위 아티스트 앨범
1 퀸카 (Queencard) (여자)아이들
2 Spicy aespa
3 I AM IVE (아이브)
4 이브프시케 그리고 푸른 수염의 아내 LE SSERAFIM (르세라핌)
5 UNFORGIVEN (feat. Nile Rodgers) LE SSERAFIM (르세라핌)
6 Kitsch IVE (아이브)
7 손오공 세븐틴(SEVENTEEN)
8 Cupid FIFTY FIFTY
9 Ditto NewJeans
10 Hype Boy NewJeans
# 연습문제

# 순위, 아티스트, 앨범 리스트 3개를 만들고
# bugs_chart 라는 리스트명 리스트 안에 리스트를 만드세요.

# rank = list(range(1,10))
# bugs_chart = [rank, artist, album]

 

# 연습문제 18

# 연습문제 18

# 3등 7등의 데이터를 서로 바꿔서 저장 후 출력하세요.

 

# 연습문제 19

# 연습문제 18

# 9등 10등의 데이터를 공백 "" 으로 바꿔서 저장 후 출력하세요.

 

⑤ 리스트 요소 제거

더보기
  • pop(index) : 마지막 요소 또는 특정 인덱스의 요소를 삭제
  • remove(값) : 특정 값을 찾아서 삭제
  • clear(): 리스트의 모든 요소 제거

 

⑥ 리스트 관련 함수

더보기

reverse() 리스트 순서 뒤집기

sort() 오름차순 정렬

sort(reverse=False) 내림차순 정렬

count(값) 특정값의 갯수 구하기

 

 

가변mutable, 불변immutable

변수가 참조하는 메모리의 이해
파이썬의 모든 자료형은 객체(포인터)다.

 

 

 

 

불변 자료형

 

불변: 변수의 값을 수정하면, 기존에 변수에 초기화 한 값이 수정되지 않는다.

변수가 참조하는 메모리 주소값이 변경된다. 새로운 위치에 값이 저장된다.

*변수 > 메모리 주소 > 2진수(실제 저장된 값)

# 1 #
# 변수 5개를 선언하고, 모두 정수 65를 할당 후 메모리 주소와, 2진수를 출력하세요.

# 2 #
# 위에서 선언한 첫번째 변수에, 정수 77을 할당 후 메모리 주소와, 2진수를 출력하세요.

 

 

 

 

가변 자료형

 

가변: 값을 수정하면, 기존에 리스트에 초기화 한 기존 값이 수정된다. 

리스트는 주소값을 리스트의 요소로 저장한다. 

*리스트 > 메모리 주소 > 리스트 요소의 메모리 주소 >  2진수(실제 저장된 값)