Programming/Python

[코딩도장-파이썬] 리스트(List)와 튜플(Tuple) 응용하기 2

Supreme_YS 2020. 11. 19. 22:21

*shell 환경이 아닌 스크립트(script) 환경에서 작업했기 때문에 print 함수로 출력했습니다.

shell 환경이라면 print 함수는 생략 가능합니다.


1. 할당과 복사

a = [0, 0, 0, 0, 0]
b = a 
print(b)
print(a)
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]

보기에 b=a와 같이 리스트를 다른 변수에 할당하면 리스트는 두 개가 될 것 같지만 실제로는 한 개의 리스트입니다.

print(a is b) 와 같이 is 연산자로 비교해보면 True가 출력이 되는데, 이는 변수 이름만 다른 것이지 a와 b는 같은 객체라는 의미입니다.

리스트를 다른 변수에 할당했을 때 출처. 코딩도장

b[2] = 99
print(a)
[0, 0, 99, 0, 0]
a와 b는 같으므로 b[2] = 99와 같이 리스트 b의 요소를 변경하면 리스트 a와 b에 모두 반영됩니다.

 

리스트를 할당한 뒤 b의 요소를 변경했을 때 출처. 코딩도장

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

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

print(a, b)
[0, 0, 0, 0, 0] [0, 0, 0, 0, 0]

리시트 두 개 복사 출처. 코딩도장

2. for 반복문으로 요소 출력하기

 

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

for i in a:
    print(i)
1
2
3
4
5
for i in [1, 2, 3, 4, 5]:
    print(i)




5

 

3. 인덱스와 요소를 함께 출력하기 ( enumerate ) 사용

  • for 인덱스, 요소 in enumerate(리스트)
  • for 인덱스, 요소 in enumerate(리스트, start=숫자):  또는 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
a = [38, 21, 53, 62, 19] 

for index, value in enumerate(a, start = 1):
    print(index, value)
1 38
2 21
3 53
4 62
5 19

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

while 반복문으로 리스트의 요소를 출력할 때는 변수 i를 인덱스로 활용합니다. 먼저 변수 i를 0으로 만들어주고, i < len(a)처럼 i가 리스트의 길이(요소 개수) 직전까지만 반복하도록 만듭니다. 즉, 리스트의 인덱스는 0부터 시작하고 마지막 인덱스는 리스트의 길이보다 1이 작으므로 <를 사용합니다. 만약 i <= len(a)처럼 <=을 사용하면 리스트의 범위를 벗어나게 되므로 주의해야 합니다.

a = [1, 2, 3, 4, 5]
i = 0

while i < len(a):
    print(a[i])
    i += 1
1
2
3
4
5

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

# 가장 작은 수 구하기

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

smallest = a[0]

for i in a:
    if i < smallest:
        smallest = i

print(smallest)
1
# 가장 큰 수 구하기

a = [100, 2, 35, 50, 80]

largest = a[0]

for i in a:
    if i > largest:
        largest = i


print(largest)
100
먼저 리스트 a의 첫 번째 요소 a[0]를 변수 smallest에 저장합니다. 그리고 for로 리스트의 요소를 모두 반복하면서 i가 smallest보다 작으면 smallest에 i를 할당합니다. 즉, 숫자를 계속 비교해서 숫자가 작으면 smallest를 바꾸는 방식입니다.
가장 큰 수는 부등호를 반대로 합니다.
a = [100, 2, 35, 50, 80]
a.sort() # default 값 오름차순(ASC)

print(a[0]) 

a.sort(reverse=True) # 오름차순의 역순 (=내림차순, DESC)

print(a[0])
2
100
앞에서 리스트를 정렬하는 sort 메소드를 언급했습니다. 리스트를 작은 순서대로 정렬(오름차순)하면 첫 번째 요소가 가장 작은 수입니다. 반대로 큰 순서대로 정렬(내림차순)하면 첫 번째 요소가 가장 큰 수가 됩니다.
a = [100, 2, 35, 50, 80]

print(min(a))
print(max(a))

100
파이썬에서 제공하는 내장함수인 min과 max를 활용해서 쉽게 구할 수 있다.

 

6. 요소의 합계 구하기

a = [10, 10, 10, 10, 10]
x = 0

for i in a:
    x += i

print(x)
50
# 파이썬 내장 함수 이용
print(sum(a))
50