Python - List Handling 101

Yubin's velog ! ·2023년 8월 24일

Data Handling 101

목록 보기
1/1
post-thumbnail

내가 자주 사용하는 함수 및 메서드를 적어놓아야겠다 !

1. 리스트 안에 특정 값의 존재 유무 파악

for 구문을 돌리는 함수를 만들어 진행하는 방법도 있지만, in , not in 사용하면 간편하다 : ) (물론 불린값만 반환하기에 정확한 인덱스를 알기 위해사는 for이 필요하긴 하다 ㅎㅎ)

리스트 안에 요소값은 어느 데이터 타입이든 사용 가능하다. 문자열, 불린값, 숫자 모두 in 사용 가능

dummy = [1,4,6,7]
print(8 in dummy) # False 불린 값으로 반환

2. 필요한 갯수만큼 Nested List 만들기

데이터 전처리할 때 nested list를 사용하는 경우가 정말 많은데, 생각보다 엄청 간단하다. 나같은 경우는 해당 기능을 함수로 만들어 필요할 때마다 원하는 만큼 중첩 리스트를 양산(?)한다 ㅎㅎ

def create_n_list(n):
	
    list_of_list = []
    
    for _ in range(n):
    	list_of_list.append([])
        
    return list_of_list

-> for _ in range(n): 에서 _ 는 보통 해당 값을 사용하지 않고, loop 자체의 횟수만 포커스를 할 때 사용을 한다. 그 때 돌아가는 값 자체를 ignore!
즉,반복대상에서 요소를 변수에 할당할 필요가 없을 때 쓴다 :)

- commonly used as a variable name when you intend to ignore the acutal value being interated over. 
- the value of range(n) will not be used, just loop n times
- convention to indicate that the value is not going to be used within the loop body

3. 리스트의 다양한 정렬 함수

여기서 x는 리스트

  • sorted(x) 함수
    - 새로운 리스트를 생성하지 않기에 새로운 변수로 지정해야 함

  • x.sort() 메서드
    - 기존 리스트를 바꿈 (원본 gone!)

  • x.reverse()메서드
    - 원소들을 뒤집어진 순서로 배치하고, 기존 리스트를 바꿈 (원본 gone!)
    • return same result with x.sort(reverse = True)

4. 리스트 안에 있는 특정 값을 제거

  • x.remove(특정값)
    - 첫 번째로 특정값을 갖고 있는 원소를 삭제 (if 여러개 있을시 첫번째 값을 삭제 , 원본 gone!)
    • 반드시 같은 값만 제거, 중첩 리스트 안에 있는 값은 인식

  • del x[위치]
    - 위치 : 지우고자 하는 특정 값의 인덱스를 적으면, 해당 값을 삭제해줌, 원본 gone!

만약 하나 값이 아닌 전체를 삭제하고 싶다면?
사실 위 경우 모두 인덱스 기반으로 삭제가 되고 기존 리스트에서 변경이 되는 건이기에, 리스트의 갯수가 삭제를 진행할 때마다 달라진다. 그래서 하기 두가지 방법을 주료 사용한다.


a. 새로운 리스트를 생성

- `append` & list comprehension
    
 # 1 append
dummy = [1,3,5,1,7,1]
   
new_dummy = []
for i in dummy:
	if i != 1:
    	new_dummy.append(i)
print(new_dummy) # >> [3, 5, 7]


# 2. List comprehension 
    
dummy = [i for i in dummy if i!= 1]
print(dummy)  # >> [3, 5, 7] 

b. 복사본 사용하여 루프 돌리기

# 복사본 바로 
dummy = [1,3,5,1,7,1]
   for i in dummy[:]: # dummy[:] dummy의 복사본 
	if i == 1:
    dummy.remove(i)
    
print(new_dummy) # >> [3, 5, 7]

# 복사본 다른 변수 지정
dummy = [1,3,5,1,7,1]
temp = dummy[::]

for i in temp:
    if i == 1:
        dummy.remove(i)
    
print(dummy) # >> [3, 5, 7]


# 3 하나씩 값을 없애는 구조, 해당 값이 몇개인지 먼저 확인이 필요
numbers = [1,2,3,2,2,2,3,4]

def remove_all_value(element, target):
    for _ in range(len(target)):
         try:
            target.remove(element)
        except:
            pass
    return target

remove_all_value(3, numbers)
print(numbers)

5. 리스트에서 해당 요소 인덱스 가져오기

members = ["a","b", "c"]
print(members.index("c"))

0개의 댓글