오늘 나는 (TIL)

[TIL 240703] 돌아온 List()Map()Lambda(), Sorted() & Sort(), 알파벳 리스트 구하기

thebuck104 2024. 7. 3. 19:30

1. 알파벳 리스트 구하기

# 알파벳 리스트 (소문자)
[i for i in string.ascii_lowercase]
# ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

# 알파벳 리스트 (대문자)
[i for i in string.ascii_uppercase]
# ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

# 알파벳 전체 리스트
[i for i in string.ascii_letters]
# ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

 

파이썬 문제를 풀다 알파벳 리스트를 사용할 상황이 주어졌었다.

하나하나 다 쓰기 귀찮아서 검색을 해보니, 

위와 같은 방법이 있었다.

알파벳들을 스트링으로 된 리스트의 형태로 반환하는 여러 방법들이 있었지만, 

ascii code를 활용하는 듯한 위의 방법이 맘에 들었다.

 

2. sorted() 함수와 sort() 함수

예시)

strings = ["sun", "bed", "car"]
n = 1

def solution(strings, n):
    strings.sort()
    answer = sorted(strings, key=lambda x:x[n])
    return answer

 

오늘 푼 파이썬 문제의 정답 코드였는데, 해당 정답에 sort()와 sorted가 모두 들어간다.

sort()는 변수에 넣지 않은 상태로 사용하고, sorted()는 그렇지 않다.

 

sorted()는 보이는 것 처럼 key 를 사용해 key를 기준으로 정렬할 수 있다.

이 때, key에 lambda 를 써주면 조금 더 복잡한 기준을 세울 수 있다.

 

위의 예시는 strings 리스트의 element들을 n번 index를 기준으로 sorted() 한 것이다.

 

 

3. List, Map, Lambda

 

리스트의 요소 하나하나를 하나의 작업을 거쳐 새로운 리스트를 만들 고 싶을 때 사용한다.

def solution(array, commands):
    return list(map(lambda x: sorted(array[x[0]-1: x[1]])[x[2]-1], commands))

 

위의 예시는,

1. map: commands 리스트의 요소 하나하나를 lambda에  x로 반환한다.

2. lambda: 그 x는 sorted( ~~ ) 작업을 수행해 map object로 반환한다.

3. list: 반환된 map object를 list로 만들어준다.

 

이 셋은 삼총사와도 같다.