TIL 24 | python, 리스트, 튜플 응용하기

ryan·2020년 8월 6일
0

Python

목록 보기
12/18

리스트의 할당과 복사를 알아보자

할당과 복사는 비슷한 것 같지만 큰 차이점이 있다.

리스트 a를 b에 할당했더니, a와 b가 같은 리스트가 되어버렸다. a를 바꾸면 b가 바뀌고, b를 바꾸면 a가 바뀌고, 신기방기.

>>> a = [1, 2, 3, 4, 5]
>>> b = a

>>> a is b
True
>>> b[2] = 100
>>> a
[1, 2, 100, 4, 5]	# b를 변경했는데 a도 바뀜
>>> b
[1, 2, 100, 4, 5]

리스트 a와 b를 완전히 두 개로 만들려면 copy 메서드로 모든 요소를 복사해야 한다.

>>> a = [1, 2, 3, 4, 5]
>>> b = a.copy()
>>> 

>>> a is b	# a와 b는 다른 객체
False
>>> a == b	# 요소는 같으므로 ==로 비교하면 True
True


>>> b[2] = 100
>>> a
[1, 2, 3, 4, 5]		# a와 b는 다른 객체이기때문에 b를 바꿔도 영향을 받지 않는다.
>>> b
[1, 2, 100, 4, 5]

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

for 반복문으로 요소 출력해보자

for 변수 in 리스트:
	반복할 코드
a = [1, 2, 3, 4, 5]
for i in a:
    print(i)

인덱스와 요소를 함께 출력해보자

  • for 인덱스, 요소 in enumerate(리스트):

enumerate: mention (a number of things) one by one, 일일이헤아리다, 열거하다, 세다

a = [100, 200, 300, 400, 500]
for index, value in enumerate(a):
    print(index, value)


0 100
1 200
2 300
3 400
4 500

인덱스를 0이 아닌 1부터 출력하고 싶으면, index + 1을 출력하면 된다.

a = [100, 200, 300, 400, 500]

for index, value in enumerate(a):
    print(index + 1, value)



1 100
2 200
3 300
4 400
5 500

좀 더 파이썬 다운 방법으로는 enumerate에 start를 지정해주는 것이다.

a = [100, 200, 300, 400, 500]

for index, value in enumerate(a, start=1):  # enumerate(a, 1)과 같이 줄여 쓸 수도 있다.
    print(index, value)


1 100
2 200
3 300
4 400
5 500

인덱스로 요소를 출력하는 방법도 있다. (다들 다 알 필요가 없다, 이러는데 뭔가 다 알아야할 것만 같다...)

a = [100, 200, 300, 400, 500]

for i in range(len(a)):
    print(a[i])




100
200
300
400
500

while 반복문으로 요소를 출력해보자

a = [100, 200, 300, 400, 500]

i = 0

while i < len(a):		# i가 리스트의 길이(요소 개수) 직전까지만 반복한다
    print(a[i])
    i += 1



100
200
300
400
500

리스트(튜플)의 가장 작은 수, 가장 큰 수, 합계를 구해보자

가장 작은 수솨 가장 큰 수를 구해보자

for로 리스트의 요소를 모두 반복하면서 i가 smallest보다 작으면 smallest에 i를 할당한다. 즉, 숫자를 계속 비교하면서 숫자가 작으면 smallest를 바꾸는 방식.

>>> a = [34, 132, 12, 593, 1255]
>>> 
>>> smallest = a[0]
>>> for i in a:
	if i < smallest:
		smallest = i
	
>>> smallest
12

가장 큰 수는 부등호를 반대로 만들면 된다.

>>> a = [34, 132, 12, 593, 1255]
>>> largest = a[0]
>>> for i in a:
	if i > largest:
		largest = i

		
>>> largest
1255

개발자는 게을러서 더 간단한 방법을 찾는다. 리스트를 정렬하는 sort 메서드를 사용해보자

>>> a = [34, 132, 12, 593, 1255]
>>> a.sort()	# 오름차순으로 정렬하면 첫 번째 요소가 가장 작은 수
>>> a[0]
12
>>> a.sort(reverse=True)	# 내림차순으로 정렬하면 첫 번째 요소가 가장 큰 수
>>> a[0]
1255

더 게을러져보자.

>>> a = [34, 132, 12, 593, 1255]
>>> min(a)
12
>>> max(a)
1255

요소의 합계를 구해보자

>>> a = [10, 20, 30, 40]
>>> x = 0
>>> for i in a:
	x += i		# 리스트의 요소를 모두 반복하면서 요소를 x에 계속 더해준다)
    

>>> x
100

번거롭구나

>>> a = [10, 20, 30, 40]
>>> sum(a)
100

min, max, sum에는 리스트뿐만 아니라 모든 반복 가능한 객체(iterable)를 넣을 수 있다. 반복 가능한 객체는 리스트, 튜플, 딕셔너리, 세트, range 등 여러 가지가 있다.

profile
👨🏻‍💻☕️ 🎹🎵 🐰🎶 🛫📷

0개의 댓글