티스토리 뷰

일상코딩/노트

Python Method (리스트 Method)

코딩애벌레 2024. 1. 23. 07:53

진도가 많이 밀리고 있기는한데.. 최대한 빨리 따라가야겠다 ㅠㅠ 5일치는 밀린 것 같다. 이제는 서로 공부하는지 지켜보기위해 구박사와 디스코드 화면공유와 캠을켜서 딴짓을 최대한 못하게 하려고 한다.

이전 시간은 문자열에대한 메서드를 알아봤으니 그외 다른 메서드들을 알아보려고 한다.

 

리스트 Method

문자열 메서드들처럼 가장 활용도가 많은 메서드 중 하나이다. 다만 리스트는 반환을 하는 항목, 변환되는 항목이 있으니 잘 구분해서 써야하며, 혹시나 잘 모르겠다면 출력을 해봤을 때  None이라는 문구가 보인다면 Return값을 확인해 보는 것이 좋은 방향인 것 같다.

 

리스트 탐색 / 정렬 Method
문법 설명 (반환값이 있는 것과 없는 것을 확인)
L.index(x, start, end) 항목들 중 가장 왼쪽에 있는 항목 x의 인덱스를 반환한다. (중복되어도 단 한개만)
start와 end로 index범위를 정할 수 있다.
L.reverse() 리스트의 순서를 반대로 변경하며 정렬은 아니다. 문자열과 숫자가 섞여있어도 가능하다. **Return 값은 없다.
L.sort() 리스트를 오름차순 정렬한다. 괄호 안에 조건을 넣을 수 있으며, 내림차순도 가능하다. 또한 문자의 길이 순으로 정렬도 가능하다.
L.count(x) 리스트 내에서 x의 요소를 가진 개수를 반환한다.
# 찾으려는 데이터의 인덱스 찾기
# L.index(데이터, start, end)
test_list = ['b', 3, 2, 4, 'a', 2, 5]
index_num_1 = test_list.index(2)	# 데이터 2가 해당 리스트의 몇번 인덱스인지
index_num_2 = test_list.index(2,3,6)	# 데이터 2가 해당 리스트 인덱스 3과 6중 몇번 인덱스인지

print(test_list)	# 원본은 놔두고 반환되기 때문에 변화 없음
print(index_num_1)	# 2 인덱스 [2]위치해 있는 것을 알 수 있다
print(index_num_2)	# 5 범위를 인덱스 [3]과 [6]사이로 제한해서 인덱스 [5] 에 있는 2의 위치 반환


# 문자열과 정수가 섞인 list를 뒤집기
# L.reverse()
new_list_2 = test_list.reverse()	#test_list의 순서를 뒤집기
print(new_list_2)			# None  *중요* reverse() 메서드는 반환값이 없다.
print(test_list)			# [5, 2, 'a', 4, 2, 3, 'b'] 문자열, 숫자 상관없다.


# 정수가 섞여있는 list 정렬하기
# L.sort()
test_list_2 = [1, 3, 2, 4, 7, 2, 5]	# 무작위로 되어있는 정수 리스트
new_list_3 = test_list_2.sort()
print(new_list_3)			# None  *중요* sort() 메서드는 반환값이 없다.
print(test_list_2)			# [1, 2, 2, 3, 4, 5, 7] 오름차순으로 정렬되었다.

# 문자열이 섞여있는 list 정렬하기
test_list_3 = ['d', 'e', 'p', 'l', 'i', 't']
test_list_3.sort()		# 문자열도 오름차순으로 정렬이 가능하다. (숫자 문자열)
print(test_list_3)		# ['d', 'e', 'i', 'l', 'p', 't']

# 문자열의 길이를 기준으로 정렬하기 : (key) 사용
test_list_4 = ["orange", "apple", "kiwi", "banana"]
test_list_4.sort(key = len)	#key의 조건을 넣어 정렬할 수 있다.
print(test_list_4)		# ['kiwi', 'apple', 'banana', 'orange'] 글자 수가 적은 순서대로 나열 되었다.

# 혹시 문자열의 길이와 알파벳순을 한번에 해결할 순 없을까?
test_list_4.sort( reverse = False, key = len)
print(test_list_4)	# ['kiwi', 'apple', 'orange', 'banana'] 아쉽게도 정렬되지 않았다..

# 문자열과 정수가 섞여있다면? 
test_list = ['b', 3, 2, 4, 'a', 2, 5]
test_list.sort()	# 문자열과 정수 사이의 인스턴스엔 부등호를 지원하지 않는다.
print(test_list)	# TypeError: '<' not supported between instances of 'str' and 'int'


# 리스트에서 해당 데이터 x의 개수를 반환하기
# L.count(x)
test_list_5 = ['b', 2, 3, 'a', 6, 'a', 2, 5, 2]
return_value_1 = test_list_5.count('a')	# 해당하는 문자열'a' 데이터 반환
print(return_value_1)			# 2 문자열 a가 들어간 것은 총 2개
return_value_2 = test_list_5.count(2)	# 해당하는 숫자 2 데이터 반환
print(return_value_2)			# 3 숫자 2이 들어간 것은 총 3개
print(test_list_5)			# ['b', 2, 3, 'a', 6, 'a', 2, 5, 2] 원본은 그대로

# 문자열이 반복된 경우에도 인식할까?
test_list_6 = ['abcabcabcbcabc']	# a 혹은 ab 혹은 abc가 반복되는 데이터
return_value_3 = test_list_6.count('abc')
print(return_value_3)			# 0 전체 문자열 한개로 인식한다.

 

리스트 값 추가 / 삭제 메서드
Method 설명 (반환값이 있는 것과 없는 것을 확인)
L.append(x) 리스트의 마지막에 데이터 x를 추가한다.
L.extend(iterable) iterable 한 데이터를 리스트 오른쪽 끝에 추가한다. (list_a += [ ]와 같다)
L.insert(i, x) 리스트 인덱스 [i]에 데이터 x를 삽입한다.
L.remove(x) 리스트 가장 왼쪽에 있는 데이터 x를 제거한다 만약 항목이 존재하지 않는다면 'ValueError'
L.pop() 리스트 가장 오른쪽에 있는 마지막 데이터를 반환 후 제거한다.
L.pop(i) 리스트의 인덱스 [i]에 있는 데이터를 반환하고 제거한다.
L.clear() 리스트의 모든 데이터를 삭제하여 빈 리스트로 만든다.

 

# 리스트에 데이터 추가 (오른쪽부터) [반환값 X]
# L.append(x)
test_list = [1, 3, 2, 5, 7, 6]		# 정수로 이루어진 리스트 할당
test_list.append(100)			# 정수 100 데이터를 리스트에 추가
test_list.append(100, 10)		# TypeError: list.append() takes exactly one argument (2 given)
test_list.append("10")			# 문자열 10 데이터를 리스트에 추가
test_list.append([300, 400])		# 리스트 [300, 400] 데이터를 리스트에 추가
test_list.append((1, 2,))		# 튜플 (1, 2,) 데이터를 리스트에 추가
test_list.append({'a' : 'apple'})	# dict {'a' : 'apple'} 데이터를 리스트에 추가. 다만 key값만.
print(test_list)			# [1, 3, 2, 5, 7, 6, 100, '10', [300, 400], (1, 2), {'a': 'apple'}]


# 리스트에 한번에 많은 데이터 추가 (오른쪽부터)
# L.extend(iterable)
test_list_2 = [1, 'a']			# 정수와 문자열이 들어간 리스트 할당
test_list_2.extend([(100, 10), [1, 2]])	# 리스트 안에 튜플/리스트 추가
test_list_2.extend(('1', '2', 3,))	# 리스트 안에 튜플 추가
test_list_2.extend({'b' : 'banana'})	# 리스트 안에 dict 추가
print(test_list_2)			# [1, 'a', 100, 10, [1, 2], '1', '2', 3, 'b']


# 리스트의 인덱스[i]에 데이터 x를 삽입
# L.insert(i, x)
test_list_3 = [1, 3, 23, 'a', 'aab', 30]
return_value = test_list_3.insert(1, 100)	# 인덱스[1]에 100 삽입
print(return_value)				# None 데이터가 삽입되어 바뀌나 return값은 없다
test_list_3.insert(3, 'c')			# 인덱스[3]에 문자열 'c' 삽입
test_list_3.insert(2, [3, 4, 5])		# 인덱스[2]에 리스트 [3, 4, 5] 삽입
print(test_list_3)				#[1, 100, [3, 4, 5], 3, 'c', 23, 'a', 'aab', 30]


# 리스트의 가장 왼쪽에 있는 데이터 x를 제거, 데이터가 존재하지 않는다면 'ValueError'
# L.remove(x)
test_list_4 = ['aabc', 3, 10, 2, 3, 3, 'zvc']
test_list_4.remove('a')			# ValueError: list.remove(x): x not in list
value_2 = test_list_4.remove('zvc')	# 가장 왼쪽부터 나열된 것 중 해당하는 문자열'zvc'을 삭제한다
print(value_2)				# None return 값은 없다
test_list_4.remove(3)			# 가장 왼쪽부터 나열된 것 중 해당하는 숫자 3을 삭제한다
print(test_list_4)			#['aabc', 10, 2, 3, 3]


# 리스트의 가장 오른쪽에 있는마지막 데이터를 반환 후 제거한다.
# L.pop()
test_list_5 = [3, 2, 'ab', 40, 2, 'gif']
value_3 = test_list_5.pop()	# 반환이 있다면 할당될 것이다.
print(value_3)			# gif 반환하는 데이터 gif 가 할당 되어있다.
print(test_list_5)		# [3, 2, 'ab', 40, 2] gif가 사라진 리스트가 되어있다.
empty_list = []			#비어있는 리스트를 할당하여 테스트
empty_list.pop()		# IndexError: pop from empty list


# 리스트의 인덱스[i]에 있는 데이터를 반환 후 제거한다.
# L.pop(i)
test_list_5 = [3, 2, 'ab', 40, 2, 'gif']
value_4 = test_list_5.pop(3)	# 인덱스[3]의 위치에 있는 데이터를 반환한다
print(value_4)			# 인덱스[3]의 데이터 값인 40을 반환한다.
print(test_list_5)		# [3, 2, 'ab', 2, 'gif']


# 리스트의 모든 데이터를 삭제 후 빈 리스트로 만든다.
# L.clear()
value_5 = test_list_5.clear()	# return 값이 있는지 확인
print(value_5)			# None return은 없다.
print(test_list_5)		# [] 모든 데이터를 삭제하니 빈 리스트만 남았다.

 

다음시간에는 집합 set와 dict에 대한 method를 알아 볼 예정이다.

728x90

'일상코딩 > 노트' 카테고리의 다른 글

Python Method (딕셔너리 Method)  (0) 2024.01.26
Python Method (세트 Method)  (1) 2024.01.24
Python Method (문자열 Method)  (1) 2024.01.22
Python Functions(1) [함수의 구조]  (0) 2024.01.21
Python 데이터 타입(Boolean, None)  (0) 2024.01.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함