공부 자료실/파이썬(Python)

파이썬(Python) - 리스트 관리

자료수집중 2020. 7. 6.
반응형

이번에는 리스트를 관리하는 방법에 대해 알아보겠습니다.

*리스트명.~~~에서 .은 리스트의 메서드라는 의미입니다.

 

먼저 추가는 append insert extend가 있습니다.

append(값)는 요소 마지막에 추가해주고 insert(입력할인덱스, 값)으로 원하는 인덱스에 입력이 가능합니다.extend(리스트)는 요소 끝에 해당 리스트를 추가해줍니다.

예제를 통해서 살펴보겠습니다.

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b = [10, 11, 12, 13]
print(a)
a.append(99)
print(a)
a.insert(4, 103)
print(a)
a.extend(b)   #a.extend([10, 11, 12, 13])도 가능
print(a)

append()를 이용해서 요소의 마지막에 99를 추가해주고 insert를 이용해서 인덱스4에 10.을 추가했습니다.

extend를 이용해서 a리스트에 b리스트를 끝에 추가했습니다.

 

직접적으로 인덱스에 추가도 가능합니다. 하지만 주의해서 사용해야 합니다.

예제를 통해 보겠습니다.

c = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
d = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
c[3:3] = [90, 91, 92, 93]
d[3] = [90, 91, 92, 93]
print(c)
print(d)

c= c + d
print(c)

c와 d는 같은 요소를 가진 리스트지만 결과는 다르게 나왔습니다.

c[3:3]는 원래는 처음과 끝의 인덱스를 표시하지만 3:3은 입력할 인덱스 범위가 0이라고 볼 수도 있지만 이게 아닌 인덱스3부터 추가하라는 의미입니다. 기존의 인덱스들이 뒤로 밀리게 됩니다.

d[3]은 인덱스3의 요소를 [90, 91, 92, 93]로 바꾼다는 의미입니다.

그리고 extend을 사용하지 않고 리스트를 더하기 해도 합쳐집니다.

 

다음으로 추가를 했으니 삭제도 해보겠습니다.

remove(값)은 해당 값의 요소를 삭제해줍니다. 만약 같은 값의 요소가 2개 이상이라면 먼저 있는 요소부터 삭제합니다. 값이 없다면 예외를 발생시킵니다.

del을 이용하면 remove와 비슷한 효과도 가능합니다.

pop(인덱스 값)은 독특하게 해당 인덱스의 값을 삭제하면서 삭제된 요소를 반환합니다.

예제를 통해 보겠습니다.

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

a.remove(5)
print(a)
del a[7]  # del (a[7])도 가능
print(a)
a[0:2] = []
print(a)
print(a.pop(3)) #그냥 a.pop(3)만 해도 사용가능
print(a)

a.remove(5)는 a리스트에서 요소 값이 5를 찾아서 삭제해줍니다.

del은 리스트의 메서드가 아닙니다. 그래도 리스트의 해당 인덱스의 요소를 삭제할 수 있습니다.

a[0:2] = []는 인덱스0부터 인덱스1까지 삭제해줍니다.

a.pop(3)은 독특하게 삭제한 인덱스의 값을 반환해서 인덱스3의 값인 6을 삭제하고 반환해줍니다.

 

리스트에서 검색도 가능합니다.

index(값), count(값), min(리스트), max(리스트) 있습니다.

index(값)은 입력한 값이 있는 인덱스의 위치를 찾아서 알려줍니다. 없다면 예외를 발생시킵니다.

count(값)은 입력한 값과 같은 요소가 몇 개가 있는지 알려줍니다.

min(리스트)는 입력한 리스트에서 가장 작은 값을 max(리스트)는 가장 큰 값을 알려줍니다.

예제를 통해 살펴보겠습니다.

a = [70, 100, 50, 95, 70, 55, 15, 45, 70,]

print("100의 위치는 = ", a.index(100))
print("요소 70의 개수는 = ", a.count(70))
print("최솟값 = ", min(a))
print("최댓값 = ", max(a))

문자열의 최대 최소는 아스키코드값으로 정합니다.

첫 번째 문자로 비교하고 같다면 다음 문자 또 같다면 다음문자 이런 식으로 비교합니다.

 

이번에는 리스트를 정렬해보겠습니다.

sort()는 오름차순으로 리스트를 정렬해줍니다. sort(reverse=True)는 내림차순으로 정렬해줍니다.

reverse()는 리스트를 거꾸로 뒤집어줍니다.

예제를 통해 살펴보겠습니다.

a = [70, 100, 50, 95, 70, 55, 15, 45, 70]

a.reverse()
print(a)
a.sort()
print(a)
a.sort(reverse=True)
print(a)

a.sort(reverse=True)와 같은 방법으로  a.sort()후 a.reverse()를 하면 같은 오름차순 정렬 후 거꾸로 뒤집기 때문에 같은 내림차순이 됩니다.

 

지금의 메서드는 리스트를 직접 수정했지만 기존의 리스트는 수정하지 않고 정렬된 값만 반환도 가능합니다.

sorted(리스트)는 입력된 리스트를 오름차순으로 정렬한 리스트를 반환합니다.

reversed(리스트)입력된 리스트를 뒤집어서 정렬한 리스트를 반환합니다.

예제를 통해 살펴보겠습니다.

b = [70, 100, 50, 95, 70, 55, 15, 45, 70]
c = sorted(b)
print(b)
print(c)
print()
d = sorted(b, reverse=True)
print(b)
print(d)
print()
e = reversed(b)
print(b)
print(e)
print(list(e))

리스트의 요소들은 보존한 상태에서 결과만 반환하는 모습을 볼 수 있습니다.

여기서 주의할 점은 reversed()는 주소가 리턴이 됩니다. 그래서 list()를 이용해서 형 변환을 해야 합니다.

 

 

sort() sorted() 몇까지의 key인자가 존재합니다.

먼저 key = str.lower는 영어에서 대소문자를 무시하고 전부 소문자로 변경해서 비교합니다.

다음으로 key = lambda 입니다. 예제를 통해 설명하겠습니다.

a = [[9, 3], [0, 2], [1, 4], [3, 5], [4, 1], [2, 7]]
print(sorted(a))
print(sorted(a, key = lambda x: x[1]))

중복리스트시 sorted()를 사용하면(sort() 포함) list[][0]으로 비교해서 정렬합니다.

key = lambda는 그 조건을 변경할 수 있습니다.

sorted(a, key = lambda x : x[1])은 비교 인덱스를list[][1]로 하자는 뜻입니다.

댓글