[Python] 08.리스트(List)
- Develop/Python
- 2020. 12. 30.
■ 리스트 선언
리스트를 선언하는 방법입니다.
▶︎ 사용방법
기본적으로 []를 사용해서 선언합니다.
["리스트요소","리스트요소","리스트요소","리스트요소"]
▶︎ 예제 코드
strlist = ["TV","냉장고","라디오"]
■ 리스트 인덱싱
리스트를 선언하면 자동으로 인덱싱이 됩니다. 그중에서 원하는 항목을 인덱스를 이용해서 불러옵니다.
▶︎ 사용방법
변수명[인덱스]
▶︎ 예제 코드
코드 :
strlist = ["TV","냉장고","라디오"]
print(strlist[0])
print(strlist[1])
print(strlist[2])
결과 :
TV
냉장고
라디오
■ 문자열 인덱싱
문자열을 리스트로 캐스팅하면 문자열을 하나하나 항목으로 분리합니다.
▶︎ 사용방법
스트링변수="문자열"
인덱스변수=list(스트링변수)
▶︎ 예제 코드
코드 :
a=“hello world”
b=list(a)
print(b)
결과 :
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
■ 문자열 리스트 변경
문자열을 리스트로 변경합니다. split메소드를 이용합니다.
▶︎ 사용방법
변수명.split
▶︎ 예제 코드
코드 :
emails = "apple@fruit.com, daiso@product.com, jeus@god.com, swiss@country.com"
emails_list = emails.split(',')
print(emails_list)
결과 :
['apple@fruit.com', ' daiso@product.com', ' jeus@god.com', ' swiss@country.com']
■ 리스트 항목 변경
리스트의 항목중 특정인덱스의 값을 변경합니다.
▶︎ 사용방법
변수명[인덱스] = 변경할 값
▶︎ 예제 코드
코드 :
strlist = ["귤","바나나","참외","사과","배"]
# 인덱스 0, 즉 천번째 원소 변경 오렌지로 변경됨.
strlist[0] = "오렌지"
# 인덱스 1, 달걀 대신 딸기로 변경됨.
strlist[1] = "딸기"
print(strlist)
결과 :
['귤', '바나나', '참외', '사과', '배']
['오렌지', '딸기', '참외', '사과', '배']
■ 리스트 길이
리스트의 길이를 확인합니다.
▶︎ 사용방법
len(리스트 혹은 리스트 변수)
▶︎ 예제 코드
코드 :
strlist = ["청바지","면바지","반바지"]
print(len(strlist))
결과 : 3
■ 리스트 항목갯수
리스트의 항목들중 특정 항목의 갯수를 확인합니다.
▶︎ 사용방법
변수명.count(항목)
▶︎ 예제 코드
예제 :
strlist = ["오렌지","사과","배","오렌지","귤","참외"]
print(strlist.count("오렌지"))
결과 : 2
■ 리스트의 특정 위치(인덱스)
리스트의 항목 위치를 나타냅니다.
▶︎ 사용방법
변수명.index(항목)
▶︎ 예제 코드
코드 :
strlist = ["패딩","점퍼","가디건"]
print(strlist.index("점퍼"))
결과 : 1
■ 리스트 항목 추가 - 1
리스트의 맨 마지막에 항목을 추가합니다.
▶︎ 사용방법
변수명.append("항목")
▶︎ 예제 코드
코드 :
strlist.append("마이")
print(strlist)
결과 :
['패딩', '점퍼', '가디건', '마이']
■ 리스트 항목 추가 - 2
특정 인덱스 위치에 항목을 삽입합니다.
▶︎ 사용방법
insert(인덱스(항목순서), 항목).
▶︎ 예제 코드
코드 :
아래는 두번째(인덱스는 0부터 시작됨)에 밀가루 원소 추가.
strlist = ["소보루빵","팥빵","크림빵"]
strlist.insert(1,"땅콩빵")
print(strlist)
결과 :
['소보루빵', '땅콩빵', '팥빵', '크림빵']
■ 리스트 원소제거
리스트중에서 특정 항목을 제거합니다.
▶︎ 사용방법
변수명.pop(인덱스)
▶︎ 예제코드
예제 1 : 리스트 맨 마지막 원소 제거. 제거할 항목를 출력. 여기서는 CPU.
코드 :
strlist = ["VGA","MEMORY","CPU"]
print(strlist.pop())
print(strlist)
결과 :
CPU
['VGA', 'MEMORY']
예제 2 : 특정 인덱스가 지정될 경우 그 값을 제거. 제거할 항목을 출력. 여기서는 MEMORY.
코드 :
strlist = ["VGA","MEMORY","CPU"]
print(strlist.pop(1))
print(strlist)
결과 :
MEMORY
['VGA', 'CPU']
■ 리스트 확장 및 합치기
두개의 리스트를 하나로 합칩니다.
▶︎ 사용방법
변수명.extend
▶︎ 예제 코드
코드 :
domestic_car = ["현대","기아","쉐보레"]
forengin_car = ["아우디","벤츠","포르쉐"]
domestic_car.extend(forengin_car)
print(domestic_car)
결과 :
['현대', '기아', '쉐보레', '아우디', '벤츠', '포르쉐']
■ 리스트 복사
리스트의 항목을 복사하는 방법입니다.
▶︎ 사용방법
변수명.copy()
▶︎ 예제 코드
코드 :
artists = ["모네","피카소"]
painters = artists.copy()
painters.append("반 고흐")
print(painters)
결과 :
['모네', '피카소', '반 고흐']
■ 리스트의 리스트
리스트안에 리스트를 만드는 방법입니다.
▶︎ 사용방법
변수명 = [[],[],[]]
▶︎ 예제 코드
# 리스트의 리스트 선언. 아래와 같이 선언시 리스트 인덱스가 생성되고 처음부터 0,1,2로 인덱스가 됩니다.
L = [[],[],[]]
# 리스트 인덱스 0에 값 설정
L[0] = [1,2,3]
print(L)
결과 : [[1, 2, 3], [], []]
# 리스트 인덱스 1에 't' 추가
L[1].append('t')
print(L)
결과 : [[1, 2, 3], ['t'], []]
# 리스트 인덱스 1에 'o' 추가
L[1].append('o')
print(L)
결과 : [[1, 2, 3], ['t', 'o'], []]
# 리스트 인덱스 1번의 0번 인덱스 원소. 'o' 추가
L[1][0] = 'd'
print(L)
결과 : [[1, 2, 3], ['d', 'o'], []]
■ 리스트의 항목 제거시 유의사항
리스트를 다룰 시 항목중 중복값이 연속으로 있을때 원치 않는 상황이 발생할 수도 있습니다.
예제를 통해 알아봅니다.
▶︎ 예제 코드
코드 :
songs = [1,1,5,4]
# 항목이 1일경우 모두 제거.
# 그러나 결과는 1,5,4 모두 출력됨. 1이 제거가 안됨.
for s in songs:
if s==1:
songs.pop(s)
print(songs)
결과 :
출력이 5,4가 아닌 1,5,4가 출력됩니다. 항목중 1 하나가 제거되고 나머지 값 1,5,4로 다시 인덱스가 매겨지는됩니다.
이때 인덱스는 0부터 시작이 되는게 아니라 연산이 되면서 계속 증가되기 때문에 0이 아닌 1로 올라오게 됩니다.
그럼 1,5,4 항목의 인덱스는 1부터 시작하기 때문에 5,4 순서대로 출력되게 되어 있습니다.
[1, 5, 4]
▶︎ 위의 현상들을 예방하는 방법
원소를 특정 리스트에 복사 후 조작합니다. 즉 백업본을 만든 후 백업본을 이용해서 다루고 별도의 저장 변수를 만들어 이곳에 저장시키는 방식입니다. 그러나 이 방식은 좋은건 아닙니다. 만약 대용량의 크기를 다루게 된다면 하나하나 비교해야 하기 때문에 시스템이 급격히 느려질 수 있습니다. 단지 입력값이 작을때 이 방식을 쓰면 좋다는것을 예제로 표현합니다.
▶︎ 예제 코드
코드 :
songs = [1,1,5,4]
songs_copy = songs.copy()
songs = []
# 값을 확인하여 1이 아닌값만 별도의 리스트를 만들어 저장합니다.
for s in songs_copy:
if s != 1:
songs.append(s)
print(songs)
결과 :
[5, 4]
■ 리스트 안에서 값을 찾을시 유의사항.
리스트를 이용해서 값을 찾을때 다음과 같은 유의사항이 있습니다.
많은 양의 리스트에서 특정 값을 찾아낼 시 성능에 문제가 발생할 수 있습니다.
아래와 같은 예제가 있습니다.
number = [9,5,7,1]
songs = {"Wannabe": 1, "Roar": 1, "Let It Be": 5, "Red Corvette": 4}
위의 number는 값이 수만개가 있을시 문제가 발생할 수 있습니다. 예를 들어 20만개 항목안에서 원하는 데이터를 찾을 시 순서대로 읽기때문에 최악의 경우는 가장 마지막에 있을 수 있습니다. 이경우 성능에 치명적인 문제가 발생하게 됩니다.
그러나 아래 키:값 형식은 문제가 발생할 여지가 작습니다. 특정 키로 값을가져오기때문에 바로 항목 위치를 찾아가서 값을 가져오게 됩니다. 그래서 대용량의 검색의 경우 키:값 방식으로 데이터를 검색하는방법이 유리합니다.
이 키:값 방식을 사전 타입이라고 합니다. 다음장에서 설명합니다.
■ 정렬 함수
정렬함수에 대해 알아봅니다. 이 정렬함수들은 리스트 타입에서만 사용됩니다.
▶︎ 사용방법
변수명.sort()
변수명.sort(reverse=False or reverse=True)
변수명.reverse()
sorted(리스트 변수)
▶︎ 예제 코드
코드 :
# 오름차순으로 정렬
a=[9,5,7,1]
print("a 정렬전 : ", a)
a.sort()
print("a 정렬후 : ", a)
# 내림차순, 오름차순 정렬
# reverse옵션을 걸지 않으면 기본적으로 오름차순입니다.
b=[9,5,7,1]
print("b 정렬전 : ", b)
# 내림차순 정렬
b.sort(reverse=True)
print("b reverse=True : ", b)
# 오름차순 정렬
b.sort(reverse=False)
print("b reverse=False : ", b)
# 오름차순 정렬
c=[9,5,7,1]
print("c 정렬전 : ", c)
d=sorted(c)
print("c 정렬후 : ", d)
# 순서 변경
# 기존 리스트들의 순서를 역순으로 변경합니다. sort의 reverse와는 다른 성격입니다.
# 반드시 구분지어서 이해해야 합니다.
d=[9,5,7,1]
print("d 순서 변경전 : ", d)
d.reverse()
print("d 순서 변경후 : ", d)
결과 :
a 정렬전 : [9, 5, 7, 1]
a 정렬후 : [1, 5, 7, 9]
b 정렬전 : [9, 5, 7, 1]
b reverse=True : [9, 7, 5, 1]
b reverse=False : [1, 5, 7, 9]
c 정렬전 : [9, 5, 7, 1]
c 정렬후 : [1, 5, 7, 9]
d 순서 변경전 : [9, 5, 7, 1]
d 순서 변경후 : [1, 7, 5, 9]
■ 리스트안에 특정 항목이 있는지 확인.
리스트안에 원하는 항목이 있는지 확인합니다. 리턴값은 Boolean입니다.
▶︎ 사용방법
변수=비교항목 in 리스트변수
▶︎ 예제 코드
코드 :
alist = ["a","b","c","d"]
true_result = "c" in alist
false_result = "e" in alist
print(true_result)
print(false_result)
결과 :
True
False
pop copy sort reverse
■ 파이선 다른 회차
[Python] Intro : Very Quick Python : https://myinfrabox.tistory.com/169
[Python] Intro : Very Quick Python
개인적으로 공부하면서 정리해 놓은 파이선 자료를 업로드합니다. 여기의 내용은 문법에 대한 자세한 설명은 생략합니다. 개발 경험이 있는 분들에게 굳이 문법에 대한 자세한 설명은 필요없으
myinfrabox.tistory.com
[Python] 01.Python 준비 : https://myinfrabox.tistory.com/170
[Python] 01.Python 준비
파이선을 처음 접할때 콘솔로 프로그래밍하기 보다는 편리한 IDE툴을 이용해서 접해보기를 권합니다. 보통 프로그래밍을 처음 배울때 날(raw)코딩으로 처음 접하기를 권하고 저또한 마찬가지이
myinfrabox.tistory.com
[Python] 02.Python 스크립트 작성 방법 : https://myinfrabox.tistory.com/171
[Python] 02.Python 스크립트 작성 방법
리눅스, 유닉스에서 파이선을 실행시 맨위에 스크립트 종류를 선언합니다. 물론 선언하지 않고도 수행은 가능합니다. 그러나 리눅스, 유닉스에서 실행되는 대부분의 스크립트는 맨위에 특정 스
myinfrabox.tistory.com
[Python] 03.변수 선언 및 할당 : https://myinfrabox.tistory.com/172
[Python] 03.변수 선언 및 할당
1. 변수 할당 파이선에서 변수할당은 다른 스크립트 언어(php, shell script)처럼 특정 스트링을 입력 후 값을 할당합니다. 좌측은 변수명, 우측은 값을 입력합니다. 또한 변수명은 숫자로 시작할 수
myinfrabox.tistory.com
[Python] 04.문자열 처리 : https://myinfrabox.tistory.com/173
[Python] 04.문자열 처리
■ 문자열 인덱스 스트링으로 값을 받을때는 자동으로 인덱스 처리가 됩니다. 스트링 인덱스는 0부터 시작되며 끝에서 읽어올 시 -1부터 시작합니다. ▶︎ 사용방법 변수명[1] : 특정 인덱스에 값
myinfrabox.tistory.com
[Python] 05.조건문 : https://myinfrabox.tistory.com/174
[Python] 05.조건문
■ 조건문이 참 혹은 거짓일경우. 조건문의 True, False에 따라 그에 맞는 분기를 실행합니다. ▶︎ 사용방법 if 조건문: ▶︎ 예제 코드 코드 : num_a = 2 if num_a > 0: print("num_a가 0보다 큽니다") else: pr..
myinfrabox.tistory.com
[Python] 06.반복문 : https://myinfrabox.tistory.com/175
[Python] 06.반복문
■ for문 시퀀스의 모든 요소가 처음부터 마지막 수행될때까지 계속 반복힙ㄴ;디/ ▶︎ 사용방법 for <루프변수> in <튜플, 리스트등의 시퀀스>: ▶︎ 예제 코드 • 예제 1 : 시퀀스의 부분을 순서대
myinfrabox.tistory.com
[Python] 07.튜플(Tuple) : https://myinfrabox.tistory.com/176
[Python] 07.튜플(Tuple)
■ 튜플 뒤에서 배울 리스트와 비슷합니다. 데이터를 열거하는 식으로 만듭니다. ()안에 데이터를 열거합니다. 튜플의 특징은 tuple = (1,)처럼 단지 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를
myinfrabox.tistory.com
[Python] 09.사전(Dictionary) : https://myinfrabox.tistory.com/178
[Python] 09.사전(Dictionary)
■ 사전 선언 방법 - 1 컬렉션중 사전을 만드는 방법입니다. 사전은 키:값 방식의 선언 방법입니다. {}(중괄호)문으로 시작합니다. 그리고 key:value방식으로 항목을 만듭니다. ▶︎ 사용방법 사전명
myinfrabox.tistory.com
[Pytho] 10.set : https://myinfrabox.tistory.com/179
[Pytho] 10.set
□ set이란? 키만 활용하는 데이터 구조로 이해합니다. 수학에서 집합과 동일한 개념입니다. ■ set 선언 방법 set을 선언하는 방법입니다. ▶︎ 사용방법 set변수 = {항목1, 항목2, ....} ▶︎ 예제 코
myinfrabox.tistory.com
[Python] 11.함수(Function) : https://myinfrabox.tistory.com/180
[Python] 11.함수(Function)
□ 사전 습득 지식 : 독 스트링(주석 묶기) 함수에는 보통 함수 명세서라 부르는 주석이 있습니다. 이곳에는 함수의 사용방법, 파라미터등을 설명합니다. 의무는 아니지만 팀으로 개발하는 소스
myinfrabox.tistory.com
[Python] 12.클래스(Class) : https://myinfrabox.tistory.com/181
[Python] 12.클래스(Class)
□ 클래스 파이선을 이용하여 클래스를 만들 수 있습니다. 다른 객체지향 언어와 거의 비슷합니다. 클래스를 만들고 객체로 선언하여 사용합니다. 그리고 객체의 메소드를 호출해서 사용합니다
myinfrabox.tistory.com
[Python] 13.외부 클래스 사용하기 : https://myinfrabox.tistory.com/182
[Python] 13.외부 클래스 사용하기
□ 외부 클래스 사용하기 파이선에도 여러가지 유용한 클래스를 제공합니다. 수학, 스트링, 랜덤수, 시간등등 여러가지 외부에서 임포트해서 유용하게 사용할 수 있는 여러 클래스를 제공합니
myinfrabox.tistory.com
[Python] 14.파일처리 : https://myinfrabox.tistory.com/183
[Python] 14.파일처리
□ 파일처리 파일을 생성, 수정, 읽기를 하는 방법을 알아봅니다. ■ 파일 생성. 신규 파일을 생성합니다. 만약 기존 파일이 있을시 덮어씁니다. 파일을 생성하고 그 파일안에 내용을 작성할 수
myinfrabox.tistory.com
[Python] 15.MySQL Database : https://myinfrabox.tistory.com/184
[Python] 15.MySQL Database
□ MySQL데이터베이스 사용방법 MySQL 데이터베이스에 대해 사용방법을 알아봅니다. DB생성, 테이블 생성-삭제, DML문법을 알아봅니다. ■ 데이터 베이스 사용을 위한 환경설정. 파이선에서 MySQL데이
myinfrabox.tistory.com
'Develop > Python' 카테고리의 다른 글
[Pytho] 10.set (0) | 2020.12.30 |
---|---|
[Python] 09.사전(Dictionary) (0) | 2020.12.30 |
[Python] 07.튜플(Tuple) (0) | 2020.12.30 |
[Python] 06.반복문 (0) | 2020.12.30 |
[Python] 05.조건문 (0) | 2020.12.29 |