파이썬 기초 - 데이터 구조(Date Structures)_리스트(list)

LSH·2023년 5월 11일
0

교육 정보

  • 교육 명: 경기미래기술학교 AI 교육
  • 교육 기간: 2023.05.08 ~ 2023.10.31
  • 오늘의 커리큘럼: 빅데이터 기초 활용 역량 강화 (5/10~6/9) - 파이썬 프로그래밍
  • 강사: 조미정 강사님 (빅데이터, 머신러닝, 인공지능)
  • 강의 계획:
    1. 파이썬 언어 기초 프로그래밍
    2. 크롤링 - 데이터 분석을 위한 데이터 수집(파이썬으로 진행)
    3. 탐색적 데이터 분석, 분석 실습
    - 분석은 파이썬만으로는 할 수 없으므로 분석 라이브러리/시각화 라이브러리를 통해 분석
    4. 통계기반 데이터 분석
    5. 미니프로젝트

리스트

1.1 리스트의 개념

여러 데이터가 순서대로 들어있는 시퀀스 자료형
요소 (element) : 리스트에 들어 있는 각각의 값
시퀀스 자료형의 종류 : List, Tuple, Range
기호를 이용하여 생성

#예제 실습
ppl=['ppl1', 'ppl2','ppl3']
print(ppl)
print(type(ppl))
['ppl1', 'ppl2', 'ppl3']
<class 'list'>
#다양한 자료형이 리스트의 요소로 들어갈 수 있음
#리스트 안에 리스트가 있는 경우 중첩 리스트라고 함 
word1 = "is"
word2 = "nice"
my_list = ["my", "list", word1, word2, [another, list]]
print(my_list)
#예제 실습
#CRUD: create, read, update, delete

#리스트 내에는 변수가 요소로 들어갈 수 있음 
word1 = "Hello"
word2 = "world"
word_list = ["oh","my",word1, word2]
순서가 있는 데이터의 집합이므로 값의 중복을 허용
various_list = [1.0, 234,"word",word_list]
숫자, 문자열, 리스트 등 다양한 자료형의 데이터를 넣을 수 있음

1.2 리스트의 인덱싱과 슬라이싱

1.2.1 인덱싱 (Indexing)

상대적인 주소로 각 요소에 접근
0 부터 시작
리버스 인덱스
변수명[인덱스] 형식

word_list = ["oh","my",word1, word2]
various_list = [1.0, 234,"word",word_list]
print(various_list[0])
print(various_list[1])
print(various_list[2])
print(various_list[3])
print(various_list[-1])
print(various_list[-3])

1.2.2 슬라이싱 (Slicing)

리스트 잘라내기
서브 리스트로 만듦
변수명[시작인덱스:끝인덱스] 형식
시작 인덱스 요소 포함, 끝 인덱스 요소 제외
인덱스 생략 가능

players = ['charles', 'martina', 'michael', 'florence', 'eli']

print(players[0:3])
print(players[1:4])
print(players[:4])
print(players[2:])

인덱스 증가폭 지정

various_list = [1.0, 234,"word",word_list]
print(various_list[:])
print(various_list[::-2])
print(various_list[3:0:-1])

1.3 리스트의 활용

1.3.1 요소 재할당

인덱싱으로 특정 위치에 새로운 값을 할당

various_list = [1.0, 234,"word",word_list]

various_list[0] = 2.0
print(various_list)

various_list[0:2] = ["num1", "num2"]
print(various_list)

various_list[::-1] = ["num1", "num2", 3, 4]
print(various_list)

various_list[1::-1] = ["num3", "num4"]
#various_list[-2::-1] = ["num3", "num4"]
print(various_list)

1.3.2 요소 추가

1.3.2.1 차례로 추가

append() 함수

various_list = [1.0, 234,"word",word_list]

various_list.append("added")
print(various_list)

[1.0, 234, 'word', ['oh', 'my', 'Hello', 'world'], 'added']

empty_list = []

1.3.2.2 인덱스로 특정 위치에 끼워넣기

insert() 함수

motorcycles = ['honda', 'yamaha', 'suzuki']

motorcycles.insert(0, 'ducati')
print(motorcycles)
motorcycles.insert(2, 'aprillia')
print(motorcycles)

1.3.3 요소 제거

1.3.3.1 del 키워드

인덱스로 특정 위치의 요소 제거

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
del motorcycles[0]
print(motorcycles)
1.3.3.2 pop() 함수

함수의 반환값 : 꺼낸 요소의 값
원본에서는 해당 요소가 제거됨

list_pop = ['a','b','c']
list_popped = list_pop.pop()
print(list_pop)
print(list_popped)
print(list_pop)

['a', 'b']
c
['a', 'b']

1.3.3.3 remove() 함수

요소의 값을 찾아 제거
앞에서부터 하나씩 제거됨

list_remove_test=['a','b','c','a','a','b']
print(list_remove_test)
list_remove_test.remove('a')
print(list_remove_test)

list_remove_test.remove('a')
print(list_remove_test)

list_remove_test.remove('a')
print(list_remove_test)

list_remove_test.remove('a') #없으면 이렇게 오류 남 
print(list_remove_test)

1.3.4 리스트 연산

리스트 합치기
  • 연산자
    extend()
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
motorcycles = motorcycles + ['hollydavison', 'bmw']
요소 검사

멤버쉽 연산자 : in, not in

cars = ["a","b","c"]
print("a" in cars)
print("b" not in cars)
정렬

sort()
#cmj : print(cars.sort()) 안됨

cars.sort(reverse=True) # 알파벳 역순 정렬
print(cars)

cars.sort() # 알파벳 순 정렬
print(cars)

cars.sort(key=len) # 길이순 정렬
print(cars)

cars.sort(key=len, reverse=True) # 길이 역순 정렬
print(cars)
순서 뒤집기
cars = ['bmw', 'audi', 'toyota', 'hyundai']
print(cars)
cars.reverse() # 원래 순서의 역순 
print(cars)
길이 계산
cars = ['bmw', 'audi', 'toyota', 'hyundai']
print(len(cars))
값의 개수 세기
cars = ['bmw', 'audi', 'toyota', 'hyundai']
print(cars.count("audi"))
print(cars.count("Hello"))
clear
cars = ['bmw', 'audi', 'toyota', 'hyundai']
print(cars)
cars.clear()
print(cars)
bool값
cars = ['bmw', 'audi', 'toyota', 'hyundai']
print(bool(cars))

cars.clear()
print(bool(cars)) #리스트가 완전히 빈 경우 false
min, max, sum
list_num = [1,2,3,4,5]
print(max(list_num))
print(min(list_num))
print(sum(list_num))
다른 리스트 항목을 요소로 가져오기

*아스타를 사용

list_1=['a','b','c','d','e']
list_2=[*list_1]

['a', 'b', 'c', 'd', 'e']
['a', 'b', 'c', 'd', 'e']

[추가실습]

  1. 영어 문장을 입력받아 단어로 나누어 리스트로 만듦
  2. 제거할 단어를 입력받아 제거
  3. 제거할 단어를 대체할 단어 받기
  4. 새로운 문장을 만들어서 출력
sentence = input("영어문장 :")
sentence_list = sentence.split()
#한줄로는 이렇게 작성 가능 list_a = list(input("영어문장:").split(" "))
print("list: ",sentence_list)
remove_word=input("제거할 단어 :")
removed_index=sentence_list.index(remove_word)
sentence_list.remove(remove_word)
sentence_list.insert(removed_index,input("추가할 단어 :"))
sentence_string = " ".join(sentence_list)
print(sentence_string)

영어문장 :cake is so good
list:  ['cake', 'is', 'so', 'good']
제거할 단어 :so
추가할 단어 :very
cake is very good

#입력받은 문장 바로 리스트로 저장하는 예시
list_a = input("영어문장:").split(" ")
list_b = list(input("영어문장:").split(" "))
print(list_a,list_b)
영어문장:a s d f 
영어문장:f d s a 
['a', 's', 'd', 'f', ''] ['f', 'd', 's', 'a', '']
profile
:D

0개의 댓글