• 회원가입
  • 로그인
  • 구글아이디로 로그인

[basic] Python - List (리스트) ★ - 변경 가능한 모음

5062  

목차

  1. 파이썬 데이터집합 종류
  2. List 개념
  3. List 요소 접근 / 일부만 선택
  4. List 요소 변경
  5. List 요소 출력 (for...in...구문)
  6. List 요소 존재 체크 (= in / not in 키워드)
  7. List 요소 개수. (= List 길이)
  8. List 요소 추가
  9. List 요소 제거
  10. List 중복 요소 제거
  11. List 복사
  12. List 결합 (= 합치기)
  13. 두 List의 동일 색인번호 요소끼리 결합
  14. list() 생성자 ※ 빈 List 생성
  15. List 메서드 종류
  16. List에 자주 사용하는 함수

 

파이썬 데이터집합 종류

 

List

  • 순서 O, 색인 O, 변경 O, 추가 O, 제거 O, 중복 O, 대괄호 [] 이용
  • (예) ['HTML', 'CSS', 'JS']

 

Tuple

  • 순서 O, 색인 O, 변경 X, 추가 X, 제거 X, 중복 O, 소괄호 () 이용.
  • 단, Tuple → List → Tuple 과정 거쳐 특정 요소 변경 가능.
  • (예) ('HTML', 'CSS', 'JS')

 

Set

  • 순서 X, 색인 X, 변경 X, 추가 O, 제거 O, 중복 X,  중괄호 {} 이용. 
  • 단, Tuple → List → Tuple 과정 거쳐 변경 가능. 단, 요소 특정 불가.
  • (예) {'HTML', 'CSS', 'JS'}

 

Dictionary

  • 순서 X, 색인 O, 변경 O, 추가 O, 제거 O, 중복 X, 중괄호 {} 이용.
  • {key:value, ....} 형태.
  • (예) {'뼈대':'HTML', '디지인':'CSS', '기능':'JS'}

 

※ 데이터에 적합한 유형 선택은 (의미・효율성・보안) 측면에서 중요.

 

List 개념

 

순서 O, 색인 O, 변경 O, 추가 O, 제거O, 중복 O, 대괄호 [] 이용 자료 모음.

 


[예제]

 

code = ["HTML", "CSS", "JS"]

print(code) 


결과값: ['HTML', 'CSS', 'JS']

 

List 요소 접근 / 일부만 선택

※ 색인번호를 지정해 List의 각 Item에 접근 가능.

 

   시작      끝
 앞부터 색인  0  1  2  3
 List  10  20  30  40
 뒤부터 색인  -4  -3  -2  -1
   끝      시작

 


1. 양의 색인번호 : 리스트 맨 앞부터 색인 시작. (※ 맨 앞 : 0)

 

code = ["HTML", "CSS", "JS"]

print(code[1])

 

결과값: CSS


2. 음의 색인번호 : 리스트의 맨 뒤부터 색인 시작. (※ 맨 뒤 : -1)

 

code = ["HTML", "CSS", "JS"]

print(code[-1])

 

결과값: JS


3. 색인 범위 : [시작:끝] 형태이며, 끝은 포함 X.

※ 즉, 시작 ~ 끝-1 까지 선택.

 

code = ["HTML", "CSS", "JS", "PHP", "SQL"]

print(code[1:3])

 

결과값: ['CSS', 'JS']


4. [:끝] 형태 경우, 맨 처음부터 선택됨.

 

code = ["HTML", "CSS", "JS", "PHP", "SQL"]

print(code[:3])

 

결과값: ['HTML', 'CSS', 'JS']


5. [시작:] 형태 경우, 맨 끝까지 선택됨.

 

code = ["HTML", "CSS", "JS", "PHP", "SQL"]

print(code[1:])

 

결과값:['CSS', 'JS', 'PHP', 'SQL']


6. [시작음수:끝음수] 경우, 맨 뒤부터 색인 시작.

 

code = ["HTML", "CSS", "JS", "PHP", "SQL"]

print(code[-3:-1])

 

결과값 : ['JS', 'PHP']


7. [시작:끝:간격]  이용해, 짝수 번째 값만 출력

 

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_nums = nums[1::2]

print(even_nums)

 

결과값: [2, 4, 6, 8, 10]


8. [시작:끝:간격] 이용해, 홀수 번째 값만 출력

 

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_nums = nums[0::2]

print(even_nums)

 

결과값: [1, 3, 5, 7, 9]


9. [시작:끝:간격] 이용해, 역순으로 짝수번째 값만 출력

 

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_nums = nums[-1::-2]

print(even_nums)

 

결과값: [10, 8, 6, 4, 2]


10. [시작:끝:간격] 이용해, 역순으로 홀수번째 값만 출력

 

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_nums = nums[-2::-2]

print(even_nums)

 

결과값: [9, 7, 5, 3, 1] 


11. for...in... 반복문 이용해 짝수 번째 값만 출력

「리스트 컴프리헨션」 자세히 보기

 

(방법1)

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_nums = [s for s in nums if s % 2 == 0]

print(even_nums)

 

(방법2)

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_nums = [s for s in nums if not s % 2]

print(even_nums)

 

(방법3)

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

even_nums = [s for s in nums if not s & 1]

print(even_nums)

 

결과값: [2, 4, 6, 8, 10] 

참고: Innisfree 님 (220520) https://sir.kr/qa/460949

 

List 요소 변경

1. 특정 색인번호 이용해 특정 item 변경 가능.

 

code = ["HTML", "CSS", "JS"]

code[1] = "Python"

print(code)

 

결과값 : ['HTML', 'Python', 'JS']


 

★ 주의.

색인범위 이용해 아이템 변경/추가 시, 반드시 여러 아이템이 와야 함.

아래 예제들 눈여겨 보시기 바람. 

 


2. 특정 색인범위 이용해 특정 문자열 item 1개 추가 시 현상.

※ 문자열 구성 낱개 문자가 개별 색인으로 들어감. 

(∵ 달랑 1개 문자열 item만 와서, 문자열을 쪼개서 에러 방지.)

 

code = ["HTML", "CSS", "JS"]

code[1:] = "Python"

print(code)

 

결과값: ['HTML', 'P', 'y', 't', 'h', 'o', 'n']


3. 특정 색인범위 이용해 문자열 item 여러 개 추가 시 현상.

※ 각 문자열이 개별 색인으로 들어감. 

 

code = ["HTML", "CSS", "JS"]

code[1:] = "Python", "PHP"

print(code)

 

결과값: ['HTML', 'Python', 'PHP']


4. 특정 색인범위 이용해 숫자 item 1개 추가 시 현상.

※ 반복 가능 객체만 가능하다는 에러 발생. (※ 2개 이상 시 가능)

(∵ 달랑 1개 숫자 아이템만 왔는데, 숫자는 더 이상 못 쪼갬.)

 

code = ["HTML", "CSS", "JS"]

code[1:2] = 100

print(code) 

 

결과값: TypeError: can only assign an iterable


5. 특정 색인범위 이용해 숫자 2개 이상 추가 시 현상.
※ 각 숫자가 개별 색인으로 들어감.

 

code = ["HTML", "CSS", "JS"]

code[1:2] = 100, 200

print(code) 

 

결과값: ['HTML', 100, 200, 'JS'] 

 

List 요소 출력 (for...in...구문)

for...in... 구문 이용.

 

code = ["HTML", "CSS", "JS"]

for x in code:

  print(x)

 

결과값:

HTML

CSS

JS

 

List 요소 존재 체크 (= in / not in 키워드)

[존재 체크] in 키워드 활용.

 

code = ["HTML", "CSS", "JS"]

if "CSS" in code:

  print("있음.")

 

결과값: 있음.


[비존재 체크] not in 키워드 사용.

 

code = ["HTML", "CSS", "JS"]

if "Python" not in code:

  print("없음.")

 

결과값: 없음.

 

 

List 요소 개수. (= List 길이)

len() 함수 이용.

 

code = ["HTML", "CSS", "JS"]

print(len(code))

 

결과값: 3

 

List 요소 추가

1. append() 메서드 - 리스트 맨 뒤에 Item 추가.
주의: 한 번에 1개씩만 추가 가능.

즉, append("PHP", "SQL") 처럼, 2개 이상 시 에러 발생.

 

code = ["HTML", "CSS", "JS"]

code.append("PHP")

print(code)

 

결과값: ['HTML', 'CSS', 'JS', 'PHP']


PS.  List 끝에 한번에 여러 요소 추가

 

방법1. List 결합 이용.

※ 아래 쪽에 나옴.

 

방법2. 색인 범위 이용.

※ List 요소 개수를 시작 색인으로 설정하고, 끝색인은 비워둠.

 

code = ["HTML", "CSS", "JS"]

code[3:] = "PHP","SQL"

print(code)

 

결과값: ['HTML', 'CSS', 'JS', 'PHP', 'SQL']


2. insert() 메서드 : 리스트의 특정 색인 위치에 아이템 추가.

주의: 한 번에 1개씩만 삽입 가능.

즉, code.insert(1, "PHP", "SQL") 처럼 2개 이상 시 에러 발생.

 

code = ["HTML", "CSS", "JS"]

code.insert(1, "PHP")

print(code)

 

결과값: ['HTML', 'PHP', 'CSS', 'JS']


PS. List 중간에 한번에 여러 요소 삽입.

list.reverse() 메서드로 순서 뒤집은 후, for 반복문 이용.

 

code = ["HTML", "CSS", "JS"]

add = ["PHP", "SQL"]

add.reverse()

for x in add:

    code.insert(1, x)

print(code)

 

결과값: ['HTML', 'PHP', 'SQL', 'CSS', 'JS'] 

 

List 요소 제거

1. remove() 메서드 - 아이템 지정해 제거.

구문: list.remove(item)

 

code = ["HTML", "CSS", "JS"]

code.remove("JS")

print(code)

 

반환값: ['HTML', 'CSS']


2. pop() 메서드 - 특정 색인 위치의 Item 제거.

구문: list.pop(index)

※ index는 선택사항. 없는 경우 맨 마지막 item 제거.

 

(예1) - 색인번호 없는 경우.

code = ["HTML", "CSS", "JS"]

code.pop()

print(code) # ['HTML', 'CSS']

 

(예2) - 색인번호 있는 경우

code = ["HTML", "CSS", "JS"]

code.pop(1)

print(code) # ['HTML', 'JS']

 


3. del 키워드 - 특정 Item 삭제하거나 List 자체를 삭제.

・Item 삭제 구문 : dellist[index]

・List 삭제 구문 : del list

 

(예1) 특정 Item 삭제

code = ["HTML", "CSS", "JS"]

del code[1]

print(code) #['HTML', 'JS']

 

(예2) List 자체 삭제

code = ["HTML", "CSS", "JS"]

del code

print(code) # 에러 발생. (∵ 출력할 List 존재 X)

 


4. clear() 메서드 - List의 Item 모두 삭제. (List 자체는 존재.)

 

code = ["HTML", "CSS", "JS"]

code.clear()

print(code)

 

결과값: []

 

List 중복 요소 제거

 

dict.fromkeys() 함수로 dictionary 만든 후,

다시 list() 함수로 List 만들면 됨.

https://homzzang.com/b/py-301

 

 

List 복사

주의: list1 = list2 형식으로는 복사가 안 됨.

∵ list1은 list2에 대한 참조일 뿐이며, list2가 변하면 list1도 변함.


1. copy() 메서드로 복사.

 

code = ["HTML", "CSS", "JS"]

hz = code.copy()

print(hz)

 

결과값: ['HTML', 'CSS', 'JS']


2. list() 함수로 복사.

 

code = ["HTML", "CSS", "JS"]

hz = list(code)

print(hz)

 

결과값: ['HTML', 'CSS', 'JS']

 

List 결합 (= 합치기)

1. + 키워드 사용해 결합.

 

code1 = ["HTML", "CSS", "JS"]

code2 = ["PHP", "SQL"]

hz = code1 + code2

print(hz)

 

결과값: ['HTML', 'CSS', 'JS', 'PHP', 'SQL']


2. for...in...반복문과 append() 메서드 사용해 결합.

 

code1 = ["HTML", "CSS", "JS"]

code2 = ["PHP", "SQL"]

for x in code2:

  code1.append(x)

print(code1) 

 

결과값: ['HTML', 'CSS', 'JS', 'PHP', 'SQL']


3. extend() 메서드로 결합.

 ※ extend() 용도 : 특정 List의 Item을 다른 List에 추가.

 

code1 = ["HTML", "CSS", "JS"]

code2 = ["PHP", "SQL"]

code1.extend(code2)

print(code1)

 

결과값: ['HTML', 'CSS', 'JS', 'PHP', 'SQL']

 

두 List의 동일 색인번호 요소끼리 결합

※ a, b 두 리스트의 동일 색인번호 요소끼리 결합해 새 리스트 생성.

 

a = ["homzzang", "sir", "naver", "daum"]

b = ["com", "kr", "com", "net"]

c = []

for i in range(len(a)):

    c.insert(i, a[i] + "." + b[i])

print(c)

 

결과값:

['homzzang.com', 'sir.kr', 'naver.com', 'daum.net']

 

list() 생성자 ※ 빈 List 생성

list() 함수 사용해 List 생성 가능. 

※ 주의: 이중 소괄호 형태여야 함. 


code = list(("HTML", "CSS", "JS"))

print(code)


반환값: ['HTML', 'CSS', 'JS']


[빈 List 생성]

 

방법1. 대괄호인 [] 이용. 

(예) code = []

 

방법2. list() 함수 이용.

(예) code = list() 

 

PS. print(code) # []  

 

List 메서드 종류

 

append()

List 끝에 요소 추가.

 

clear()

List에서 모든 요소 제거.

 

copy()

List 복사본 반환.

 

count()

지정 값에 해당하는 요소 개수 반환.

 

extend()

현재 목록의 끝에 List (또는, 반복 가능 객체)의 요소를 추가.

 

index()

지정 값을 가진 첫 번째 요소의 인덱스를 반환.

 

insert()

지정 위치에 요소 추가.

 

pop()

지정된 위치에서 요소를 제거.

 

remove()

지정 값을 가진 요소 제거.

 

reverse()

List 순서 뒤집기. (=역순).

 

sort()

List 순서 정렬.

 

 

List에 자주 사용하는 함수

 

len() : 요소 개수

max() : 최대값

min() : 최소값

sum() : 합계. (= 합산)

sorted() : 정렬. (오름차순 / 내림차순)

reversed() : 역순. (= 순서 뒤집기)

 



분류 제목
basic Python - Home (입문) - 이념 / 추천 링크
basic Python - Intro (소개) - 용도・특징
basic Python - Start (시작) - 파이썬 설치/실행/버전확인
basic Python - Syntax (구문) - 들여쓰기・변수・주석
basic Python - Comment (주석)
basic Python - Variable (변수)
basic Python - DataType (데이터타입) - 자료형
basic Python - Number (숫자)
basic Python - Casting (데이터 타입 변경) - 자료형 변환
basic Python - String (문자열) ★ ※ 색인번호 (= 인덱스) 개념.
basic Python - Boolean (참거짓)
basic Python - Operator (연산자)
basic Python - List (리스트) ★ - 변경 가능한 모음
basic Python - Tuple (투플/튜플) - 변경 불가 모음
basic Python - Set (셋/세트) - '순서(=색인)' 없고, 중복 허용 않는 데이터 모음.
basic Python - Dictionary (딕셔너리) - Key:value 쌍으로 구성된 모음
basic Python - if...elif...else - (이프조건문) ※ 3항연산자 = 삼항연산자
basic Python - While (와일반복문) - 와일문
basic Python - For (포반복문) ★★★★★
basic Python - Function (함수)
1/24
목록
찾아주셔서 감사합니다. Since 2012