Unit 22.2 리스트와 튜플 응용하기2

이하연·2020년 6월 16일
0

Python Theory

목록 보기
16/18

22.2 리스트의 할당과 복사 알아보기

1. 할당하기

b=a와 같이 리스트를 다른 변수에 할당하면 리스트가 한 개입니다.

>>> a = [0, 0, 0, 0, 0]
>>> b = a

따라서 a,b 중 한 쪽에서 요소를 변경하면 공용으로 쓰는 리스트가 변함

>>> b[2] = 99
>>> a
[0, 0, 99, 0, 0]
>>> b
[0, 0, 99, 0, 0]

2. 복사하기

리스트 a와 b를 완전히 두 개로 만들려면 copy()메서드

>>> a = [0, 0, 0, 0, 0]
>>> b = a.copy()

따라서 a,b는 별개므로 한쪽의 값을 변경해도 다른 리스트에 영향 없음


22.3 반복문으로 리스트의 요소를 모두 출력

1. for 반복문으로 요소 출력

for 변수 in 리스트:
     반복할 코드

2. 인덱스와 요소를 함께 출력하기

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 인덱스, 요소 in enumerate(리스트, start=숫자):

# enumerate(a, 1)로 써도됨
>>> for index, value in enumerate(a, start=1):
...     print(index, value)
...
1 38
2 21
3 53
4 62
5 19

3. while반복문으로 요소 출력하기

>>> a = [38, 21, 53, 62, 19]
>>> i = 0
>>> while i < len(a):
...     print(a[i])
...     i += 1
...
38
21
53
62
19

22.4 리스트의 가장 작은 수, 가장 큰 수, 합계 구하기

1. 가장 작은 수와 가장 큰 수 구하기

1) 가장 작은 수

① 첫번째 방법

>>> a = [38, 21, 53, 62, 19]
>>> smallest = a[0]
>>> for i in a:
...     if i < smallest:
...         smallest = i
...
>>> smallest
19

② 두번째 방법

>>> a = [38, 21, 53, 62, 19]
>>> a.sort()
>>> a[0]
19

③ 세번째 방법

>>> a = [38, 21, 53, 62, 19]
>>> min(a)
19

2) 가장 큰 수

① 첫번째 방법

>>> a = [38, 21, 53, 62, 19]
>>> largest = a[0]
>>> for i in a:
...     if i > largest:
...         largest = i
...
>>> largest
62

② 두번째 방법

>>> a = [38, 21, 53, 62, 19]
>>> a.sort(reverse=True)
>>> a[0]
62

③ 세번째 방법

>>> a = [38, 21, 53, 62, 19]
>>> max(a)
62

2. 요소의 합계 구하기

>>> a = [10, 10, 10, 10, 10]
>>> sum(a)
50

22.5 리스트 표현식 사용하기

리스트 안에 for 반복문과 if 조건문을 사용할 수 있다
리스트 컴프리헨션(list comprehension) : 리스트 안에 식, for 반복문, if 조건문 등을 지정하여 리스트를 생성하는 것

[식 for 변수 in 리스트]
list(식 for 변수 in 리스트)

>>> a = [i for i in range(10)]        # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = list(i for i in range(10))    # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> c = [i + 5 for i in range(10)]    # 0부터 9까지 숫자를 생성하면서 값에 5를 더하여 리스트 생성
>>> c
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> d = [i * 2 for i in range(10)]    # 0부터 9까지 숫자를 생성하면서 값에 2를 곱하여 리스트 생성
>>> d
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

리스트 표현식에서 if조건문 사용하기

[식 for 변수 in 리스트 if 조건식]
list(식 for 변수 in 리스트 if 조건식)

>>> a = [i for i in range(10) if i % 2 == 0]    # 0~9 숫자 중 2의 배수인 숫자(짝수)로 리스트 생성
>>> a
[0, 2, 4, 6, 8]

for 반복문과 if 조건문을 여러 번 사용

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

a = [i * j for j in range(2, 10)
           for i in range(1, 10)]

22.6 리스트에 map 사용하기

  • map은 리스트의 요소를 지정된 함수로 처리해주는 함수

  • map은 원본 리스트를 변경하지 않고 새 리스트를 생성합니다.

list(map(함수, 리스트))
tuple(map(함수, 튜플))

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

22.7 튜플 응용하기

1. 튜플에서 특정 값의 인덱스 구하기

a.index(값)

2. 특정 값의 개수 구하기

a.count(값)

3. 튜플 표현식 사용하기

tuple(식 for 변수 in 리스트 if 조건식)

4. tuple에 map 사용하기

a = tuple(map(int, a))

5. 튜플에서 가장 작은 수, 가장 큰 수, 합계 구하기

min(a)
max(a)
sum(a)

22.10 심사문제 보류

0개의 댓글