-
[코딩도장] day10. 리스트 할당/복사, 리스트 표현식IT/파이썬 2020. 8. 22. 23:30
■ 들어가기
- 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그
▶ Unit22. 리스트와 튜플 응용하기
- 22.1 리스트 조작하기
- 22.2 리스트의 할당과 복사 알아보기
- 22.3 반복문으로 리스트의 요소를 모두 출력하기
- 22.4 리스트의 가장 작은 수, 가장 큰 수, 합계 구하기
- 22.5 리스트 표현식 사용하기
- 22.6 리스트에 map 사용하기
- 22.7 튜플 응용하기
>> 22.2 리스트의 할당과 복사 알아보기 <<
1. 리스트의 할당과 복사
- 할당 : 하나의 리스트를 다른 여러 변수가 바라보도록 지정
- 복사 : 하나의 리스트를 copy하여 다른 리스트로 생성
>>> a = [10, 20, 30]
>>> b = a # 할당
>>> a
[10, 20, 30]
>>> b
[10, 20, 30]
>>> a is b # 동일한 객체
True
>>> b[2] = 99 # a와 b가 동일한 리스트를 바라보는 객체이며, 리스트의 값을 변경하면 a와 b에 모두 반영됨
>>> b
[10, 20, 99]
>>> a
[10, 20, 99]>>> a = [10, 20, 30]
>>> b = a.copy() # 복사
>>> a
[10, 20, 30]
>>> b
[10, 20, 30]
>>> a is b # 동일하지 않은, 전혀 다른 객체
False
>>> a == b # 복사된 요소는 모두 같기 때문에 동등비교 시 참(True)
True
>>> b[2] = 99 # a와 b가 다른 객체이므로 b의 리스트를 변경해도 a에 영향 미치지 않음
>>> b
[10, 20, 99]
>>> a
[10, 20, 30]
>> 22.3 반복문으로 리스트의 요소를 모두 출력하기 <<
1. for 반복문으로 요소 출력
- 사용법
for 변수 in 리스트 :
코드1
>>> a = [10, 20, 30, 15, 20, 40]
>>> for i in a :
print(i)
10
20
30
15
20
402. for 반복문 시 인덱스와 요소 값 함께 출력
- 사용법1
for 인덱스, 요소 in enumerate(리스트) :
코드1
>>> 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- 사용법2
for 인덱스, 요소 in enumerate(리스트, start=숫자) :
코드1
- 인덱스가 '숫자' 부터 시작하도록 지정
>>> a
[38, 21, 53, 62, 19]
>>> for index, value in enumerate(a, start=0) : # enumerate(a, 0) 으로 사용 가능
print(index, value)
0 38
1 21
2 53
3 62
4 19- 만일 리스트의 인덱스만 출력하고 싶다면? (range함수를 사용하자!)
( range함수를 통해 0부터 마지막 인덱스(len(a))까지 리스트가 생성 )
>>> a
[38, 21, 53, 62, 19]
>>> for i in range(len(a)) :
print(i)
0
1
2
3
43. while 반복문으로 요소 출력
- 변수 i를 활용하여 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) for 반복문, if 조건문으로 설정하기
2) sort 메서드 사용하기
3) min, max 함수 사용하기
>>> a = [38, 21, 53, 62, 19]
>>> smallest = a[0]
>>> for i in a :
if i < smallest :
smallest = i
>>> smallest
19>>> largest = a[0]
>>> largest
38
>>> for i in a :
if i > largest :
largest = i
>>> largest
62>>> a
[38, 21, 53, 62, 19]
>>> a.sort()
>>> a
[19, 21, 38, 53, 62]
>>> a[0] # 가장 작은 수 확인
19
>>> a[-1] # 가장 큰 수 확인
62
>>> a.sort(reverse=True)
>>> a
[62, 53, 38, 21, 19]
>>> a[0] # 리스트를 내림차순으로 정렬 수 가장 큰 수 확인
62>>> a = [38, 21, 53, 62, 19]
>>> min(a)
19
>>> a
[38, 21, 53, 62, 19]
>>> max(a)
62
>>> a
[38, 21, 53, 62, 19]2. 요소의 합계 구하기
1) for 반복문, if 조건문으로 설정하기
2) sum 함수 사용하기
>>> a
[38, 21, 53, 62, 19]
>>> sum = 0
>>> for i in a :
sum += i
>>> sum
193>>> a
[38, 21, 53, 62, 19]
>>> sum(a)
193- 앗!! sum(a) 가 안된다구요?? "TypeError: 'int' object is not callable"
>>> a = [38, 21, 53, 62, 19]
>>> sum(a)
Traceback (most recent call last):
File "<pyshell#266>", line 1, in <module>
sum(a)
TypeError: 'int' object is not callable-> 앞선 테스트에서 sum 이란 변수를 사용했었기 때문에 해당 변수를 호출하고 있어 에러가 발생하는 것임.
-> del 함수로 sum 변수 삭제 후 다시 시도하면 문제 해결 ~! ( del sum )
( sum은 파이썬에서 합계를 구하는 함수이므로 사용하지 말자. 이외에도 파이썬에서 제공하는 함수명과 동일하게 변수를 사용하지 말자~ )
>> 22.5 리스트 표현식 사용하기 <<
- 리스트 안에 for 반복문과 if 조건문을 사용할 수 있다?!
- 리스트 표현식 : 리스트 안에 "식", "for 반복문"을 지정하여 리스트를 생성하는 방법
- 사용법
- [식 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))
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]-> range()를 통해 숫자를 생성하고, 변수 i로 숫자를 하나 씩 꺼내고, i를 이용해서 리스트를 만들겠다!!
>>> a = [i + 5 for i in range(10)] # 0부터 9까지 숫자를 생성하면서 값에 5를 더하여 리스트 생성
>>> a
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>> b = [i * 2 for i in range(10)] # 0부터 9까지 숫자를 생성하면서 값에 2를 곱하여 리스트 생성
>>> b
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]1. 리스트 표현식에 if 조건문 사용하기
- 사용법
- [식 for 변수 in 리스트 if 조건식]
- list(식 for 변수 in 리스트 if 조건식)
- 리스트 표현식 내 if 조건문은 항상 for 반복문 뒤에 지정!
>>> a = [i for i in range(10) if i%2 == 0] # 0부터 9까지 숫자 중 2의 배수인 숫자(짝수)로 리스트 생성
>>> a
[0, 2, 4, 6, 8]2. 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(1, 10) for i in range(2, 3)]
>>> a
[2, 4, 6, 8, 10, 12, 14, 16, 18]
>>> b = [i * j for j in range(1, 10)
for i in range(2, 3)]
>>> b
[2, 4, 6, 8, 10, 12, 14, 16, 18]-> 리스트 표현식 내 for 반복문이 여러 개 일 경우, 뒤->앞의 순서로 처리함!
-> for 반복문을 여러 개 작성 시 한 줄로 작성 가능하지만 가독성을 위해 여러 줄로 입력!
● 요약 ●
1. 파이썬은 모든 것을 리스트로 처리하는구나~
2. 파이썬은 제공되는 함수가 엄청 많구나 ~
'IT > 파이썬' 카테고리의 다른 글
[코딩도장] day11. 2차원 리스트 (0) 2020.08.23 [코딩도장] day10. 리스트 map, 튜플 (0) 2020.08.23 [코딩도장] day10. 리스트 요소값 조작하기 - index(), count(), reverse(), sort(), sorted, clear() (0) 2020.08.22 [코딩도장] day10. 리스트 추가/삭제 - append,extend,insert / pop,remove (0) 2020.08.22 [코딩도장] day9. 반복문 제어 - break, continue (0) 2020.08.17