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)]
>>> [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]
arr = [[0 for j in range(cols)] for i in range(rows)]
>>> 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)])
>>> my_dict = {"A":1, "B":2, "C":3}
>>> my_dict.keys()
dict_keys(['A', 'B', 'C'])
>>> my_dict = {"A":1, "B":2, "C":3}
>>> my_dict.values()
dict_values([1, 2, 3])
>>> my_dict = {"A":1, "B":2, "C":3}
>>> my_dict["A"]
1
>>> my_dict.get("A")
1
>>> my_dict["D"]
>>> my_dict.get("D")
- 딕셔너리의 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']
>>> 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)