[Python] 08.리스트(List)

리스트 선언

리스트를 선언하는 방법입니다.

 

▶︎ 사용방법

기본적으로 [] 사용해서 선언합니다.

["리스트요소","리스트요소","리스트요소","리스트요소"]

 

▶︎ 예제 코드

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

댓글(0)

Designed by JB FACTORY