8000 List Comprehension Chapter · joejaeyoung/Algorithm_Study@1fecd08 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1fecd08

Browse files
committed
List Comprehension Chapter
1 parent bf58e57 commit 1fecd08

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

Concept/00_Special/Pythonic_Code_For_Coding_Test.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,47 @@ print(*[1 if dt in _set else 0 for dt in _list], sep = '\n')
100100
어... 이해가 잘 가시나요? 가신다면 그냥 스크롤을 아래로 쭉~~ 내리시면 됩니다.
101101

102102
우선 List Comprehension은 다음과 같은 구조를 띄고 있습니다.
103+
> (변수를 활용해 만들 값) for (변수 명) in (순회할 수 있는 값)
104+
105+
그렇기 때문에 List Comprehension으로 된 코드를 읽을 때는, 앞에부터 읽는게 아니라, for 뒤 부터 읽으면 꽤 편해요.
106+
107+
이걸 인지하고 위 코드를 다시 보면, _list에 있는 원소를 dt라고 하고, 앞에 있는 `1 if dt in _set else 0`에 대입한다는 이야기네요.
108+
109+
해당 내용은 _set에 원소가 들어있으면 1, 아니면 0을 리턴하라는 말이네요? 휴! 드디어 해석했습니다.
110+
111+
물론 다차원 배열도 사용할 수 있습니다.
112+
```python
113+
square = [[x ** 2 for x in range(3)] for _ in range(3)]
114+
print(square) # [[1, 4, 9], [1, 4, 9], [1, 4, 9]]
115+
```
116+
코드의 길이를 확실히 줄일 수 있다는 장점이 있지만, 너무 길면 가독성도 해치고, 코드를 작성하는 본인도 "내가 뭘 하고 있지?" 라는 생각이 들 수 있습니다. 예를 들자면...
117+
```python
118+
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
119+
print CF0F ([[x for x in row if x % 3 == 0] for row in matrix if sum(row) >= 10]) # [[6], [9]]
120+
```
121+
제발 이러진 마세요...
122+
123+
참고로, 리스트 뿐만이 아니라 tuple, set, dict도 만들 수 있습니다.
124+
dict의 경우 뒷 부분에서 zip을 배우고 나면 정말 요긴하게 쓸 수 있습니다. (즉, 다음에 다룬다는 이야기입니다.) 사용법 자체는 List Comprehension과 유사합니다.
125+
* * *
126+
## Dictionary 잘 쓰기
127+
* * *
128+
## Sorting
129+
* * *
130+
## 문자열
131+
-
132+
* * *
133+
## Combination/Permutation
134+
* * *
135+
## 기타 짤막한 도움말
136+
쓸 예정인 친구들
137+
- zip
138+
- sum() (reduce()를 설명할까?)
139+
- join
140+
- swap하기
141+
- for, while문 에서의 else
142+
- Enumerate
143+
103144
* * *
104145
Reference
105146
---------

0 commit comments

Comments
 (0)
0