[ProjectH4C Study] 파이썬 코딩 도장 #6

Jennie Yoon·2021년 1월 31일
0

Study

목록 보기
6/7

리스트와 튜플 응용하기

  • 리스트에 요소 추가하기
    • append: 요소 하나를 추가
    • extend: 리스트를 연결하여 저장
    • insert: 특정 인덱스에 요소 추가

• append(요소) -> 리스트 끝에 요소 하나를 추가

>>>a= [10,20,30]
>>>a.append(500)
>>>a
[10,20,30,500]
>>>len(a)
4

• append(리스트)

>>>a=[10,20,30]
>>>a.append([500,300])
>>>a
[10,20,30,[500,300]]
>>>len(a)
4
  1. extend(리스트) -> 리스트 끝에 다른 리스트를 연결하여 리스트를 확장
>>>a=[10,20,30]
>>>a.extend([500,300])
>>>a
[10,20,30,500,300]
>>>len(a)
5
  • 리스트의 특정 인덱스에 요소 추가하기
    • insert(인덱스, 요소)-> 리스트의 특정 인덱스에 요소 하나를 추가
    >>>a= [10,20,30]
    >>>a.insert(2,500)
    >>>a
    [10,20,500,30]
    >>>len(a)
    4
    • insert(0, 요소) -> 리스트의 맨 처음에 요소를 추가
    • insert(len(리스트), 요소) -> 리스트 끝에 요소를 추가

insert는 요소 하나를 추가하므로 insert에 리스트를 넣으면 append처럼 리스트 안에 리스트가 들어간다.

>>>a= [10,20,30]
>>>a.insert(1, [500,600])
>>>a
[10,[500,600],20,30]

만약 리스트 중간에 요소 여러 개를 추가하고 싶다면 슬라이스를 이용.

>>>a= [10,20,30]
>>>a[1:1]=[500,600] #시작과 끝 인덱스를 같게 지정하면 해당 인덱스의 요소를 덮어쓰지 않으면서 요소 여러 개를 중간에 추가
>>>a
[10,500,600,20,30]
  • 리스트에서 요소 삭제하기
    • pop: 마지막 요소 또는 특정 인덱스의 요소를 삭제
    • remove: 특정 값을 찾아서 삭제

• pop(): 리스트의 마지막 요소를 삭제한 뒤 삭제한 요소를 반환

>>>a= [10,20,30]
>>>a.pop()
30
>>>a
[10,20]

• pop(인덱스): 해당 인덱스의 요소를 삭제한 뒤 삭제한 요소를 반환

>>>a= [10,20,30]
>>>a.pop(1) #del a[1]도 상관 X
20
>>>a
[10,30]
  1. remove(값): 리스트에서 특정 값을 찾아서 삭제
    >>>a= [10,20,30]
    >>>a.remove(20)
    >>>a
    [10,30]
    만약 리스트에 같은 값이 여러 개가 있을 경우 처음 찾은 값을 삭제
    >>>a= [10,2o,30,20]
    >>>a.remove(20)
    >>>a
    [10,30,20]
  • 리스트로 스텍과 큐 만들기

    파이썬에서 스택은 리스트를 그대로 활용해도 되지만, 큐는 좀 더 효율적으로 사용할 수 있도록 덱(deque, double ended queue)를 지원함.
  • deque(반복 가능한 객체)
>>>from collections import deque
>>>a= deque([10,20,30])
>>>a
deque([10,20,30])
>>>a.append(500) #덱의 오른쪽에 500 추가
>>>a
deque([10,20,30,500])
>>>a.popleft() #덱의 왼쪽 요소 하나 삭제
10
>>>a
deque([20,30,500])
  • index(값): 리스트에서 특정 값의 인덱스를 구함
>>>a= [10,20,...,40]
>>>a.index(20)
1
  • count(값): 리스트에서 특정 값의 개수 구함
>>>a= [10,20,30,15,20,40]
>>>a.count(20)
2
  • reverse() -> 리스트에서 요소의 순서를 반대로 뒤집음
>>>a= [10,20,30,15,20,40]
>>>a.reverse()
>>>a
[40,20,15,30,20,10]
  • sort() -> 리스트의 요소를 작은 순서대로 정렬(오름차순)
>>>a= [10,20,30,15,20,40]
>>>a.sort()
>>>a
[10,15,20,20,30,40]

>>>b= [10,20,30,15,20,40]
>>>sorted(b) #정렬된 새 리스트 생성
[10,15,20,20,30,40]
  • clear() -> 리스트의 모든 요소를 삭제
>>>a= [10,20,30]
>>>a.clear() #del a[:] 사용 가능(시작과 끝 인덱스 생략)
>>>a
[]
  • 리스트의 할당과 복사 알아보기
  • 인덱스와 요소를 함께 출력하기
    for 인덱스, 요소 in enumerate(리스트):
>>>a= [38,21,53,62,19]
>>>for index, value in enumerate(a):
...	print(index, value)
...
0 38
1 21
2 53
3 62
4 19
  • for 반복문과 if 조건문을 여러 번 사용하기
    [식 for 변수1 in 리스트1 if 조건식1 for 변수2 in 리스트2 if 조건식2 ... for 변수n in 리스트n if 조건식n]
    list(식 for 변수1 in 리스트1 if 조건식1 for 변수2 in 리스트2 if 조건식2 ... for 변수n in 리스트n if 조건식 n)
>>>a= [i*j for j in range(2,10) for i in range(1,10)]
         # <--------------------------------- 처리순서
>>>a
[2,4,6,8,10,12,3,6,9,12,....]
a= [i*j for j in range(2,10)
        for i in range(1,10)]

리스트 표현식에 for가 여러 개 일때 처리 순서는 뒤에서 앞으로 순 이다.

  • 리스트에 map 사용하기
    • list(map(함수, 리스트))
    • tuple(map(함수, 튜플))
>>>a= [1.2,2.5,3.7,4.6]
>>>for i in range(len(a)):
...a[i] = int(a[i])
...
>>>a
[1,2,3,4]

>>>a= [1.2,2.5,3.7,4.6]
>>>a= list(map(int, a))
>>>a
[1,2,3,4]

>>>a= list(map(str, range(10)))
>>>a
['0','1','2','3',...,'9']
  • input().split()과 map
>>>a= input().split() #input().split()을 사용한 뒤에 변수 한개에 저장해보면 리스트인지 확인해볼 수 있다.
10 20(입력)
>>>a
<map object at 0x03DFB0D0>
>>>list(a)
[10,20]

-> map이 반환하는 map객체는 이터레이터라서 변수 여러 개에 저장하는 언패킹(unpacking)이 가능함.
따라서 a,b=map(int, input().split())처럼 list를 생략한 것

a,b = map(int, input().split())
<=>
x= input().split() #input().split()의 결과는 문자열 리스트
m= map(int,x) #리스트의 요소를 int로 변환, 결과는 맵 객체
a,b=m #맵 객체는 변수 여러 개에 저장할 수 있음

0개의 댓글