지난 글에 이어서 Python의 기본 문법 중 리스트(list)에 대해 알아보겠습니다.
Python 리스트 설명
리스트(list)는 변수를 하나로 묶어서 사용하는 방법입니다.
위의 그림을 예시로 설명해 보자면, 변수 4개를 쓰고 싶으면 일일이 선언을 해줘야 하죠?? (변수 a, b, c, d) 그리고 각각의 변수에 숫자나 문자나 불리언 값을 대입하여 사용했습니다.
리스트는 위와 같이 변수를 사용할 때마다 매번 선언해야 하는 과정이 필요하지 않습니다. 그냥 리스트의 이름(위의 그림의 경우 aa)을 지정하고 첨자를 통해 해당 변수를 사용할 수 있습니다. 그러면 코드를 통해 더 자세히 알아볼까요??
a,b,c,d = 0,0,0,0
a = int(input("a의 값을 입력하세요: "))
b = int(input("b의 값을 입력하세요: "))
c = int(input("c의 값을 입력하세요: "))
d = int(input("d의 값을 입력하세요: "))
print("4 변수의 합은 %d입니다" %(a+b+c+d))그러면 리스트를 활용하여 코드를 수정해 볼까요?
aa = [0,0,0,0]
aa[0] = int(input("첫번째 값을 입력하세요: "))
aa[1] = int(input("두번째 값을 입력하세요: "))
aa[2] = int(input("세번째 값을 입력하세요: "))
aa[3] = int(input("네번째 값을 입력하세요: "))
print("4 변수의 합은 %d입니다" %(aa[0]+aa[1]+aa[2]+aa[3]))이렇게 수정하고 실행해 보면 첫 번째 코드와 같은 결과나 나오는 것을 알 수 있습니다. 그런데 이게 뭐가 편한 거냐 알 수도 있을 것 같네요…
한번 변수가 100개라고 생각해 볼까요?? 그러면 int(input()) 구문이 100개가 있어야 하고, 그에 따라 변수도 100개를 설정해야겠죠?? 하지만 리스트를 사용할 경우 for 문을 통해 이 문제를 간편하게 해결할 수 있습니다. 먼저 append라는 함수를 활용해 봅시다.
append 설명
aa = []
aa.apend(0)처음에 리스트 aa를 선언할 때 []라고 설정했습니다. 이건 빈 공간을 의미하는데요, 아직 리스트 안에 몇 개의 변수를 넣어줄지 모른다는 겁니다. 뒤에 append의 의미는 0의 값을 하나 넣어준다는 건데요, append 횟수에 따라 리스트 안에 변수의 수가 늘어납니다.
aa = []
aa.append(0)
aa.append(1)
aa.append(0)
aa.append(2)
print(aa)The results are as follows:
[0, 1, 0, 2]
append를 할 때는 꼭 0을 입력하지 않아도 됩니다. 그럼, list와 append를 활용해서 100가지의 변수의 합을 구하는 코드를 작성해 보겠습니다.
aa = []
result = 0
for i in range (100) :
aa.append(0)
aa[i] = i + 1
result = result + aa[i]
print(len(aa))
print(result)중간에 있는 len이라는 함수는 리스트 안의 변수의 개수를 알려줍니다. 그래서 위의 코드를 실행하면 aa 변수의 개수인 100과 1부터 100까지의 합인 5050이 출력됩니다.
리스트 첨자의 활용
aa = []
for i in range (100) :
aa.append(0)
aa[i] = i + 1
print(aa[-1])
print(aa[-2])The results are as follows:
100
99
첨자에서 -n의 의미는 끝에서 n번째 변수를 의미합니다.
aa = []
for i in range (100) :
aa.append(0)
aa[i] = i + 1
print(aa[0:10])
print(aa[13:21])
print(aa[:5])
print(aa[93:]):를 활용하여 사용할 변수의 범위를 설정할 수 있습니다.
리스트의 연산
a = []
b = []
for i in range (5) :
a.append(0)
a[i] = i + 1
for i in range (5) :
b.append(0)
b[i] = i * 3
print("List a =", a)
print("List b =", b)
print(a+b)
print(2*a)리스트의 덧셈과 곱셈은 각각의 변수의 값을 계산하는 게 아니라 그대로 이어 붙이는 걸 의미합니다. 그래서 a-b나 a/2가 실행될 수 없습니다.
리스트 값 변경하기
a = [1, 2, 3]
a[2] = 100
print(a)
a[1:2] = [50]
print(a)
a[1:2] = [30,35]
print(a)The results are as follows:
[1, 2, 100]
[1, 50, 100]
[1, 30, 35, 100]
리스트에서는 첨자를 통해 범위를 지정하여 변수의 값을 변경할 수 있습니다. 단, :을 써서 복수의 변수를 설정할 경우에는 반드시 []를 사용해야 하는데요, 위 예시의 경우 a[1:2] = 50을 입력하면 오류가 발생합니다.
2차원 리스트
지금까지는 변수를 일렬로 연결하는 1차원 리스트를 사용했는데요, 2차원 리스트도 사용할 수 있습니다.
리스트 관련 함수
del 함수
del은 리스트의 지정된 변수를 삭제하는 함수입니다. 사용 방법은 del(리스트[index])입니다.
a = [1,2,3,4,5,6,7]
print(a)
del(a[5])
print(a)
del(a[1],a[2])
print(a)The results are as follows:
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 7]
[1, 3, 5, 7]
pop 함수
pop은 리스트의 제일 마지막 변수를 삭제하는 함수입니다. del과 달리 마지막 값만 제외합니다. 사용 방법은 리스트.pop()입니다.
a = [1,2,3,4,5,6,7]
print(a)
a.pop()
print(a)[1, 2, 3, 4, 5, 6]이 출력됩니다.
remove 함수
remove는 리스트에서 지정한 값을 지웁니다. 사용 방법은 리스트.remove(지울 값)입니다. 지정된 값이 여러 개가 있을 경우 가장 앞에 있는 값만 지워집니다.
a = [1,7,4,11,61,7,8]
print(a)
a.remove(7)
print(a)[1, 7, 4, 11, 61, 7, 8]
[1, 4, 11, 61, 7, 8]
reverse 함수
reverse는 리스트의 순서를 반대로 만들어줍니다. 사용 방법은 리스트.reverse()입니다.
a = [1,2,3,4,5,6,7]
print(a)
a.reverse()
print(a)[7, 6, 5, 4, 3, 2, 1]이 출력됩니다.
sort 함수
sort는 리스트의 값을 순서대로 정렬해 주는 함수입니다. 사용 방법은 리스트.sort()입니다.
a = [1,7,4,11,61,23,8]
print(a)
a.sort()
print(a)[1, 7, 4, 11, 61, 23, 8]
[1, 4, 7, 8, 11, 23, 61]
count 함수
count는 리스트에서 지정된 값의 개수를 알려줍니다. 사용 방법은 리스트.count(찾을 값)입니다.
a = [1,7,4,11,61,7,8]
print(a.count(7))출력 결과는 2 입니다.
index 함수
index는 리스트에서 지정된 값의 위치를 알려줍니다. 사용 방법은 리스트.index(찾을 값)입니다.
a = [1,7,4,11,61,7,8]
print(a.index(61))
print(a.index(7))출력 결과는
4
1
.
insert 함수
insert는 리스트의 지정된 위치에 지정된 값을 삽입합니다. 사용 방법은 리스트.insert(위치, 값)입니다.
a = [1,7,4,11,61]
print(a)
a.insert(2,31)
print(a)[1, 7, 4, 11, 61]
[1, 7, 31, 4, 11, 61]
extend 함수
extend는 리스트의 항목을 늘립니다. 사용 방법은 리스트.extend(리스트)입니다. 리스트의 더하기 연산과 같다고 보시면 됩니다.
a = [1,7,4,11,61]
print(a)
a.extend([2,31])
print(a)[1, 7, 4, 11, 61]
[1, 7, 4, 11, 61, 2, 31]
References: 위키독스