[python]_리스트(2)

Hi K·2022년 10월 6일
0

파이썬기초

목록 보기
1/12
post-thumbnail

4. 리스트 타입의 함수 (method)

  • 종류
    • 리스트.append(추가할 아이템) : 인자값을 통채로 리스트의 마지막 아이템으로 추가, 인자값은 1개만 받음 = 1개의 아이템만 추가 가능
    • 리스트.extend(추가할 아이템) : 인자값의 아이템을 뽑아서 리스트의 마지막 아이템으로 추가, 인자값은 1개만 받음, 단 여러 개의 아이템 추가 가능
    • 리스트.insert(인덱스번호, 추가할 아이템) : 위치를 지정해서 아이템을 삽입할 수 있음, 통채로 아이템을 추가
    • 특징 : 원본에 바로 적용이 됨
  • 참고 연산자 : in 연산자 (결과값은 bool type)

> 리스트 생성하기

a = [1,2,3]
a

append()

  • 문법 : 리스트.append(추가할 아이템)
    a.append(4)
    a

  • 추가할 자료로 [5,6]을 제공한다면?
    a.append([5, 6])
    a

extend()

  • 문법 : 대상리스트.extend(리스트만입력가능)
  • append()와의 차이점: 추가대상으로 리스트만 받을 수 있다
  • 리스트 길이만큼 인덱스가 연장된다(append는 무조건 1만큼만 연장됨)
    a.extend([7, 8, 9])
    a
  • extend는 설령 하나의 인덱스만 연장해도 무조건 리스트로 추가해야함
    a.extend([10])
    a

insert()

  • 문법 : 대상리스트.insert(인덱스번호, 추가할아이템)
  • 다른 함수와의 차이점 : 아이템 추가가 지정인덱스에 실행됨
  • append와의 유사점 : 하나의 인덱스번호에 모든 자료를 때려박음
  • 교체가 아닌 추가이기 때문에 실제로 소실되는 자료는 없음
    a.insert(0, 100)
    a

    a.insert(0, [99, 98])
    a

in

in 키워드는 특정 요소가 리스트 내에 있는지 없는지 여부를 물어봅니다.

  • 값 in 리스트
  • 100이 a리스트 내에 존재하나요? -> 100 in a
    100 in a

    5 in a

5 in a[6]

not in

not in 키워드는 특정 요소가 리스트 내부에 없는지를 물어봅니다.

  • 값 not in 리스트
  • 50이 a 리스트에 없습니까? 50 not in a
    10 not in a

<< 연습문제 >>

아래의 순서에 맞추어 직접 실행해보세요.
1) 빈 리스트 생성
2) 1번 리스트에 숫자 1,2,3 을 아이템으로 추가
3) 2번 리스트의 3번째 위치에 문자 100 을 아이템으로 추가
4) 3번 리스트의 마지막에 문자 A, B를 아이템으로 가진 리스트를 아이템으로 추가
5) 4번 리스트의 아이템을 2번 반복해서 가지는 리스트를 출력

1) 빈 리스트 생성
list1 = []
list1 =list()
list1

2) 1번 리스트에 숫자 1,2,3 을 아이템으로 추가
list1.extend([1,2,3])
list1

3) 2번 리스트의 3번째 위치에 문자 100 을 아이템으로 추가
list1.insert(2, 100)
list1

4) 3번 리스트의 마지막에 문자 A, B를 아이템으로 가진 리스트를 아이템으로 추가
list1.extend(["A", "B"])
list1

5) 4번 리스트의 아이템을 2번 반복해서 가지는 리스트를 출력
list1 = list1*2
list1

5. 아이템 수정하기

  • 인덱싱, 슬라이싱을 이용해서 아이템을 수정할 수 있다.

리스트 생성하기

a = [1, 2, 3, 4]

인덱싱

  • 하나의 아이템 수정하기
  • 0번 인덱스에 있는 값을 [10, 20]으로 수정하기
  • 결과 : [[10, 20], 2, 3, 4]
  • insert와 다른점 : insert는 데이터가 뒤로 밀려남
  • append()와 같은 기능
    a[0] = [10, 20]
    a

슬라이싱

  • 연속된 범위에 있는 여러개의 아이템 수정하기
  • 0번 인덱스만 선택 <= 슬라이싱
  • 슬라이싱은 리스트로 묶어서 넣지 않고 하나하나 넣는다
  • extend()와 같은 기능
    a2 = [1, 2, 3, 4]
    a2[:1] = [10, 20]
    a2
  • 슬라이싱으로 값을 할당할 때의 주의점 : 전달하는 값은 1개여도 리스트로
  • 동작원리가 extend()와 동일하기 때문에
  • a2[0:1] = 100 ->error
    a2[0:1] = [100]
    a2

<< 연습문제 >>

아래 조건에 맞추어 리스트를 수정하세요.
[ 10, 99, 3, '사과', 73, '바나나' ]
조건1) '사과'를 'apple'로 수정
조건2) 99, 3 을 9, 33으로 수정
조건3) 73 을 [ 73, 74 ] 로 수정

p = [ 10, 99, 3, '사과', 73, '바나나' ]

조건1) '사과'를 'apple'로 수정
p[3] = "apple"
p

조건2) 99, 3 을 9, 33으로 수정
p[1:3] = [9, 33]
p

조건3) 73 을 [ 73, 74 ] 로 수정
p[4] = [73, 74]
p

6. 아이템 삭제하기

  • 슬라이싱
  • del 키워드 + 인덱싱/슬라이싱
  • remove() 메서드 : 값을 기준으로 삭제
  • pop()
    • 인자값에 아무것도 입력하지 않거나 -1을 입력하면 마지막 인덱스를 삭제
    • 특정 인덱스를 지정해 삭제할 수도 있음.

리스트 생성하기
a1 = [10, 20, 30, 40, 50]
a2 = [10, 20, 30, 40, 50]

하나의 아이템 삭제하기 1 ----- 슬라이싱 + 빈 리스트를 이용하는 방법
0번 인덱스 값을 삭제
a1[:1] = []
a1

만약 슬라이싱이 아닌 인덱싱 지정 후 빈 리스트 대입시
a2[0] = []
a2

하나의 아이템 삭제하기 2 ----- del 키워드 + 인덱싱
del a1[-1]
a1

만약 인덱싱 없이 del키워드를 쓴다면
특정 리스트 전체를 통째로 삭제해버림
del a2

하나의 아이템 삭제하기 3 ----remove()메서드
문법 : 리스트.remove(삭제할자료(!!인덱스아님!!))
a = [1, 2, 3, 3, 3, 4, 5]

5라는 값을 삭제
a.remove(5)
a

중복된 아이템이 존재하면 가장 앞서는 인덱스 자료 하나만 삭제
a.remove(3)
a

del 키워드는 단일 자료 뿐만 아니라 연속된 범위(슬라이싱) 자료 삭제도 가능하다
del a[2:]
a

하나의 아이템 삭제하기 4 ---- pop() 메서드
마지막에 위치한 값이 몇이었는지 확인시켜주고 삭제함
a =[1,2,3,4,5,6]
a.append(6)
a

인덱스번호 미기입시 마지막 인덱스 자료 삭제(현재 기준으로는 6 삭제)
a.pop()

tip
자료를 적재하는 두가지 방법
stack 나중에 들어온게 먼저 나감
queue 먼저 들어온게 먼저 나감
pop()은 stack에서 자료를 뽑을 때 쓰이는 명령어
enqueue 자료를 넣음 dequeue 자료를 뽑음

삭제하려는 인덱스 번호를 지정하면 마지막이 아닌 입력된 인덱스 위치 자료를 삭제합니다.
a.pop(2)

a

7. 아이템 정렬하기

  • 함수

    • sort() : 기본동작 = 오름차순정렬(작은값이 먼저오고 큰값이 나중에)
    • reverse() : 기존 리스트의 처음과 마지막 순서를 뒤집어서 나열

a = [10, -30, 57, -33, 71, 1, 34, -2]

  • sort()

    값을 오름차순으로 정렬 : sort() 기본동작 / sort(reverse=False)
    원본 리스트 변경됨
    a.sort()
    a

값을 오름차순이 아닌 내림차순으로 정렬하는 경우 : .sort(reverse=True)
a.sort(reverse=True)
a

값을 인덱스 기준으로 반대로 뒤집기 : reverse()
내림차순이 아닌 역순 정렬
b = [10, 71, 32, 46, 5, 95]
b.reverse()
b

8. 아이템 개수 세기

  • 함수

    • 리스트.count(값) : 조회값이 리스트 내부에 몇 개 있는지 개수를 보여줌
    • len() : 파이썬 내장함수로 리스트 내부에 전체 아이템이 몇 개 있는지 보여줌
  • count()
    특정 아이템의 개수
    a = [1, 2, 3, 3, 3, 4, 5, 6]
    a.count(6)

  • len()
    전체 아이템의 개수
    len(a)

profile
파이썬초짜의 기록

0개의 댓글