[코테] 프로그래머스 - 자료형 정리

김재연·2023년 7월 4일
0
post-thumbnail

1. 문자열

  • 거꾸로 뒤집기
>>> my_string = "ABCDE"
>>> my_string[::-1]
'EDCBA'
  • 숫자인지 확인하기
>>> my_string = "A1"
>>> my_string[0].isdigit()
False
>>> my_string[1].isdigit()
True
  • 대문자 -> 소문자, 소문자 -> 대문자로 바꾸기
>>> my_string = "AbCdE"
>>> my_string.swapcase()
'aBcDe'
  • 해당 문자의 인덱스 찾기
    : index는 문자가 존재하지 않을때 오류가 나니까 지양할 것
>>> my_string = "abcde"
>>> my_string.find("c")
2
>>> my_string.find("z")
-1
  • 배열 요소들을 합쳐서 문자열로 만들기
>>> my_string = "".join(["Hello", "World", "!"])
>>> my_string
'HelloWorld!'
  • 문자의 개수 세기 (리스트와 동일)
>>> my_string = "abcda"
>>> my_string.count("a")
2
>>> my_string.count("ab")
1
>>> my_string.count("e")
0
  • 문자열 자르기 (리스트와 동일)
>>> my_string = "HelloWorld!"
>>> my_string[5:10]
'World'
>>> my_string[-6:-1]
'World'
  • 문자열 나누기
    : 디폴트는 공백이며, 구분자는 삭제된 상태로 리스트로 반환된다.
>>> my_string = "Hello World !"
>>> my_string.split()
['Hello', 'World', '!']
  • 문자 교체하기 (문자 삭제하기)
>>> my_string = "ABCDCBA"
>>> my_string.replace("B", "*")
'A*CDC*A'
>>> my_string.replace("D", "")
'ABCCBA'

2. 리스트 (list)

  • 거꾸로 뒤집기
    : 원본배열을 손상하며, 반환값은 None이다.
>>> my_list = ["A", "B", "C", "D", "E"]
>>> my_list.reverse()
>>> my_list
['E', 'D', 'C', 'B', 'A']
  • 정렬하기
    : 원본배열을 손상하지 않고, 정렬한 새 배열을 반환값으로 준다.
    : reverse=True 속성을 통해 반대로 정렬할 수도 있다.
    : key 속성으로 정렬할 기준을 지정할 수 있다. 해당 내용은 여기
>>> my_list = ["C", "D", "E", "A", "B"]
>>> my_sorted_list = sorted(my_list)
>>> my_reverse_sorted_list = sorted(my_list, reverse=True)
>>> my_list
['C', 'D', 'E', 'A', 'B']
>>> my_sorted_list
['A', 'B', 'C', 'D', 'E']
>>> my_reverse_sorted_list
['E', 'D', 'C', 'B', 'A']
  • 원소 추가하기
>>> my_list = ["A", "B", "C"]
>>> my_list.append("D")
>>> my_list
['A', 'B', 'C', 'D']
  • 해당 원소 인덱스 찾기
    : 맨앞에 있는 1개만 나온다
    : ⏱️시간복잡도가 길다
>>> my_list = ["A", "B", "C", "A"]
>>> my_list.index("A")
0
>>> my_list.index("D")
# 에러
  • 해당 원소 개수 세기 (문자열과 동일)
>>> my_list = ["A", "B", "C", "A"]
>>> my_list.count("A")
2
>>> my_list.count("D")
0
  • 리스트 자르기 (문자열과 동일)
>>> my_list = ["A", "B", "C", "A"]
>>> my_list[:3]
['A', 'B', 'C']
  • 리스트 컴프리헨션
    : 대괄호로 꼭 묶어주기
    : if만 쓸거면 for 오른쪽에, else까지 쓰려면 for 왼쪽에
>>> [i for i in range(5)]
[0, 1, 2, 3, 4]
>>> [i*10 for i in range(5)]
[0, 10, 20, 30, 40]
>>> [i for i in range(5) if i%2==0]
[0, 2, 4]
>>> [i if i%2==0 else 'odd' for i in range(5)]
[0, 'odd', 2, 'odd', 4]
>>> [(i,j) for i in range(2) for j in range(3)]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]

# if - elif - else 쓰기
>>> [i if i%2==0 else 'odd-1' if i==1 else 'odd-3'  for i in range(5)]
[0, 'odd-1', 2, 'odd-3', 4]
"""
for i in range(5):
	if i%2 == 0:
		i
	elif i == 1:
		'odd-1'
	else:
		'odd-3'
"""
  • 인덱스 가져오기
>>> for index, value in enumerate(["A", "B", "C"]):
...     print(index, value)
...
0 A
1 B
2 C
  • 여러개의 배열 동시에 돌기
>>> for a1, a2 in zip(["a", "b", "c"], [1, 2, 3]):
...     print(a1, a2)
...
a 1
b 2
c 3
  • 여러 배열 동시에 돌면서 인덱스 가져오기
>>> listA = ["a", "b", "c"]
>>> listB = [1, 2, 3]
>>> for i, a, b in zip(range(len(listA)), listA, listB):
...     print(i, a, b)
...
0 a 1
1 b 2
2 c 3
  • 인덱스로 값 삭제하기
    : 삭제 후 값 취득
    : 삭제된 값의 뒷부분이 모두 앞으로 땡겨짐
    : 시간복잡도가 빠름
>>> my_list = ["A", "B", "C", "D", "E"]
>>> my_list.pop(2)
'C'
>>> my_list
['A', 'B', 'D', 'E']
>>> my_list.pop()
'E'
>>> my_list
['A', 'B', 'D']
  • 빈배열일때 첫번째 원소 오류없이 가져오기
>>> my_list = []
>>> my_list[-1:]
[]
>>> my_list[0]
# 에러
  • 2차원 배열 올바르게 선언하기
arr = [[0 for j in range(cols)] for i in range(rows)]
  • 리스트1에서 리스트2에 있는 내용 제거하기
>>> my_list1 = [1,2,3,4,5]
>>> my_list2 = [2,4]
>>> for i in my_list2:
...     my_list1.remove(i)
...
>>> my_list1
[1, 3, 5]
  • 값 교환하기
>>> my_list = [1,2,3,4,5]
>>> my_list[2], my_list[3] = my_list[3], my_list[2]
>>> my_list
[1, 2, 4, 3, 5]
  • 리스트 돌면서 값 삭제하기
    : 리스트[:]로 복사본을 만들어서 루프에 넣는다.
>>> my_list = [1,2,3,4,5]
>>> for i in my_list[:]:
...     print(i)
...     my_list.remove(i)
...
1
2
3
4
5
>>> my_list
[]

3. 집합 (set)

  • 리스트에서 중복된 값 삭제하기
>>> my_set = set(["A", "B", "A", "C", "A"])
>>> my_set
{'A', 'C', 'B'}
  • 원소 한개 추가하기
>>> my_set = {"A", "B", "C"}
>>> my_set.add("D")
>>> my_set
{'A', 'C', 'B', 'D'}
  • 원소 여러개 추가하기
>>> my_set = {"A", "B", "C"}
>>> my_set.update(["D", "E"])
>>> my_set
{'B', 'E', 'C', 'D', 'A'}
  • 원소 삭제하기
>>> my_set = {"A", "B", "C"}
>>> my_set.remove("B")
>>> my_set
{'A', 'C'}
  • 집합은 순서가 없어서 특정값을 인덱스로 불러올 수 없다. for로 하나씩 가져올수는 있는데 순서는 없음
>>> my_set = {"A", "B", "C"}
>>> for s in my_set:
...     print(s)
...
A
C
B

4. 사전 (dictionary)

  • 값 갱신하기
    : key가 없었으면 추가, 있었으면 수정
>>> my_dict = {"A":1, "B":2}
>>> my_dict["C"] = 3
>>> my_dict
{'A': 1, 'B': 2, 'C': 3}
>>> my_dict["A"] = 0
>>> my_dict
{'A': 0, 'B': 2, 'C': 3}
  • key 리스트와 value 리스트 모두 가져오기
>>> my_dict = {"A":1, "B":2, "C":3}
>>> my_dict.items()
dict_items([('A', 1), ('B', 2), ('C', 3)])
  • key 리스트만 가져오기
>>> my_dict = {"A":1, "B":2, "C":3}
>>> my_dict.keys()
dict_keys(['A', 'B', 'C'])
  • value 리스트만 가져오기
>>> my_dict = {"A":1, "B":2, "C":3}
>>> my_dict.values()
dict_values([1, 2, 3])
  • 해당 key의 value 가져오기
>>> my_dict = {"A":1, "B":2, "C":3}
>>> my_dict["A"]
1
>>> my_dict.get("A")
1
>>> my_dict["D"]
# 에러
>>> my_dict.get("D")
# 에러X, 반환값도 X
  • 딕셔너리의 value로 key 정렬하기
    : sorted()딕셔너리.items() 안하고 그냥 딕셔너리만 넣으면 key만 들어감
>>> my_dict = {"A":100, "B":10, "C":50}
>>> sorted(my_dict, key=lambda x:my_dict[x])
['B', 'C', 'A']
  • for문으로 딕셔너리 선언하기
>>> my_dict = {i:0 for i in ["A","B","C","D","E"]}
>>> my_dict
{'A': 0, 'B': 0, 'C': 0, 'D': 0, 'E': 0}
  • 딕셔너리 안에 value로 집합을 선언하려면 {}가 아니라 set()을 써야 한다.
>>> my_dict = {"set":set()}
>>> my_dict["set"].add(1)
>>> my_dict
{'set': {1}}
  • 딕셔너리 key <-> value 바꾸기
    : value로 key를 검색해야하는데, for문으로 검색하면 시간초과가 날때 사용
reversed_dictionary = dict(map(reversed, dictionary.items()))

5. 튜플 (tuple)

  • 튜플 안의 요소 가져오기
>>> my_tuple = (1, 2, 3, 4, 5)
>>> my_tuple[2]
3
  • 튜플 내부의 값을 하나씩 쪼개서 가져오기
>>> for a, b in [(1,2), (3,4)]:
...     print(a, b)
...
1 2
3 4
  • 내부의 값을 변경하거나 삭제할 수 없으나 통째로 변경은 가능하다.
>>> my_tuple = (1,2,3,4,5)
>>> my_tuple[2] = 6
# 에러
>>> my_tuple = (1,6,3,4,5)
>>> my_tuple
(1, 6, 3, 4, 5)
profile
일기장같은 공부기록📝

0개의 댓글