리스트 사용 예시

참고 1 데이터 추출 대상

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

참고 3 데이터 csv 추출 결과

참고 4 자연어 딥러닝

 

프로그램이란?

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

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

데이터는 현실에서 여러가지 형태로 존재한다.

프로그래밍에서 데이터는 자료형(Data Type) 이라는 형태로 구분하여 관리한다.

관리의 목적은, 프로그래밍의 편리성을 위해서다.

① 리스트

①.① 리스트란?

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

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

개발자가 편리하게.

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

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

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


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

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

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

 

①. 리스트 자료형 사용법

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

# 리스트를 사용하는 방법(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
# 순위, 영화명, 개봉일, 관객수, 매출액 리스트 변수를 만들어 모두 출력하세요.

② 리스트 요소 접근법

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

.① index란?

프로그래밍에서 인덱스란, 복합 자료형의 요소를 구분짓는 기준이 된다.

변수명과 비교시, 변수명이 중복되지 않고 1개의 데이터를 식별해 참조한다.

반면 복합 자료형에서는 변수명이 1개다. 하지만, index로 각 요소의 데이터를 식별한다.

 

.② 리스트 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

.① 문자열 index, 리스트 index 비교

 

문자열

리스트 1

리스트 2

리스트 3

엑셀(출석부)

 

. 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}입니다.")

 

. 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}입니다.")

 

.④ 리스트의 특정 요소 변경

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개를 만들고
# 입력값을 받아, 과목을 식별하고
# 과목별 평균을 출력하도록 로직을 구성하세요.

 

# 연습문제 10

# 연습문제 10

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

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

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

 

# 연습문제 11

# 연습문제 11

# 화성을 Mars, 해왕성을 Neptune 으로 변경하여 출력하세요.

 

 

 range( ) 함수와 list( ) 함수

range( ) 내장함수 공식문서

 

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

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

2)마지막 숫자

3)증감 숫자

 

예시 1)

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

 

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

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

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

 

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

 

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

 

. 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])

 

. 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진수(실제 저장된 값)