๐ ๋ฆฌ์คํธ
๋ฆฌ์คํธ๋ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ผ๋ก ๋ด์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ ์ฌ์ฉํ ์ ์๋ค. ํ์ด์ฌ์ ๋ฆฌ์คํธ ์๋ฃํ์ C๋ Java์ ๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฐฐ์ด(Array) ๊ธฐ๋ฅ์ ํฌํจํ๊ณ ์์ผ๋ฉฐ, ๋ด๋ถ์ ์ผ๋ก๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฑํํ๊ณ ์์ด append(), remove() ๋ฑ์ ๋ฉ์๋๋ฅผ ์ง์ํ๋ค.
๐ ๋ฆฌ์คํธ ๋ง๋ค๊ธฐ
๋ฆฌ์คํธ๋ ๋๊ดํธ([ ]) ์์ ์์๋ฅผ ๋ฃ์ด ์ด๊ธฐํํ๋ฉฐ, ์ผํ(,)๋ก ์์๋ฅผ ๊ตฌ๋ถํ๋ค. ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ๊ณ ์ ํ ๋๋ list() ํน์ ๊ฐ๋จํ ๋๊ดํธ([ ])๋ฅผ ์ด์ฉํ ์ ์๋ค.
a = [1, 2, 3, 4]
print(a)
print(a[2])
# ๋น ๋ฆฌ์คํธ ์ ์ธ ๋ฐฉ๋ฒ 1
a = list()
print(a)
# ๋น ๋ฆฌ์คํธ ์ ์ธ ๋ฐฉ๋ฒ 2
a = []
print(a)
```
์ถ๋ ฅ
[1, 2, 3, 4]
3
[]
[]
```
์ฝ๋ฉ ํ ์คํธ ๋ฑ์์ ์ฃผ๋ก ํฌ๊ธฐ๊ฐ N์ธ 1์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํด์ผ ํ๋๋ฐ ๋ค์ ๋ฐฉ์์ผ๋ก ์ด๊ธฐํํ๋ฉด ํธ๋ฆฌํ๋ค. ๋ค์์ ํฌ๊ธฐ๊ฐ N์ด๊ณ , ๋ชจ๋ ๊ฐ์ด 0์ธ 1์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ๋ ์ฝ๋์ด๋ค.
n = 10
a = [0] * n
print(a)
```
์ถ๋ ฅ
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
```
๐ ๋ฆฌ์คํธ์ ์ธ๋ฑ์ฑ๊ณผ ์ฌ๋ผ์ด์ฑ
ํ์ด์ฌ์ ์ธ๋ฑ์ค๊ฐ์ ์์ ์ ์์ ์์ ์ ์๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์์ ์ ์๋ฅผ ๋ฃ์ผ๋ฉด ์์๋ฅผ ๊ฑฐ๊พธ๋ก ํ์ํ๊ฒ ๋๋ค.
์๋ฅผ ๋ค์ด ์ธ๋ฑ์ค์ -1์ ๋ฃ์ผ๋ฉด ๊ฐ์ฅ ๋ง์ง๋ง ์์๊ฐ ์ถ๋ ฅ๋๋ค.
a = [1, 2, 3, 4, 5]
print(a[-1])
print(a[-3])
a[3] = 7
print(a)
```
์ถ๋ ฅ
5
3
[1, 2, 3, 7, 5]
```
๋ํ ๋ฆฌ์คํธ์์ ์ฐ์์ ์ธ ์์น๋ฅผ ๊ฐ๋ ์์๋ค์ ๊ฐ์ ธ์์ผ ํ ๋๋ ์ฌ๋ผ์ด์ฑ(Slicing)์ ์ด์ฉํ ์ ์๋ค. ๋๊ดํธ ์์ ์ฝ๋ก (:)์ ๋ฃ์ด ์์ ์ธ๋ฑ์ค์ (๋ ์ธ๋ฑ์ค - 1)์ ์ค์ ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด a๋ผ๋ ๋ฆฌ์คํธ์ ๋ ๋ฒ์งธ ์์๋ถํฐ ๋ค ๋ฒ์งธ ์์๊น์ง์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด a[1 : 4]์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋๋ค.
a = [1, 2, 3, 4, 5, 6]
print(a[1:4])
```
์ถ๋ ฅ
[2, 3, 4]
```
๐ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค. ์ด๋ฅผ ์ด์ฉํ๋ฉฐ ๋๊ดํธ([ ]) ์์ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ๋ณต๋ฌธ์ ๋ฃ๋ ๋ฐฉ์์ผ๋ก ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ ์ ์๋ค.
๊ฐ๋จํ 0๋ถํฐ 19๊น์ง์ ์ ์ค์์ ํ์๋ง ํฌํจํ๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ ์ ํ ๋๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ ์ ์๋ค.
array = [i for i in range(20) if i % 2 == 1]
print(array)
```
์ถ๋ ฅ
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
```
์ด๋ฌํ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ ๋ ๋งค์ฐ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ค.
์๋ฅผ ๋ค์ด N*M ํฌ๊ธฐ์ 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ค.
n = 3
m = 4
array = [[0] * m for _ in range(n)]
print(array)
```
์ถ๋ ฅ
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
```
์ธ๋๋ฐ(_)์ ์ญํ
๋ฐ๋ณต์ ์ํํ๋ ๋ฐ๋ณต์ ์ํ ๋ณ์์ ๊ฐ์ ๋ฌด์ํ๊ณ ์ ํ ๋ ์ธ๋๋ฐ(_)๋ฅผ ์ฌ์ฉํ๋ค.
์๋ฅผ ๋ค์ด ๋จ์ํ "Hello World"๋ฅผ 5๋ฒ ์ถ๋ ฅํ ๋๋ ์๋์ ๊ฐ์ด ์ธ๋๋ฐ(_)๋ฅผ ์ด์ฉํ์ฌ ๋ฌด์ํ ์ ์๋ค.
for _ in range(5):
print("Hello World")
์ฐธ๊ณ ๋ก ํน์ ํฌ๊ธฐ์ 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ ๊ฒฝ์ฐ์๋ ๋ฐ๋์ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ ์ ์ฌ์ฉํด์ผ ํ๋ค. ๋ง์ฝ ์๋์ ๊ฐ์ด 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ๋ค๋ฉด ์๋์น ์์ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์ ์๋ค.
n = 3
m = 4
array = [[0] * m] * n
print(array)
array[1][1] = 5
print(array)
```
์ถ๋ ฅ
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
[[0, 5, 0, 0], [0, 5, 0, 0], [0, 5, 0, 0]]
```
์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด array[1][1]์ ๊ฐ์ 5๋ก ๋ฐ๊พธ์์ ๋ฟ์ธ๋ฐ, 3๊ฐ์ ๋ฆฌ์คํธ์์ ์ธ๋ฑ์ค 1์ ํด๋นํ๋ ์์๋ค์ด ๋ชจ๋ 5๋ก ๋ฐ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด๋ ๋ด๋ถ์ ์ผ๋ก ํฌํจ๋ 3๊ฐ์ ๋ฆฌ์คํธ๊ฐ ๋ชจ๋ ๋์ผํ ๊ฐ์ฒด์ ๋ํ 3๊ฐ์ ๋ํผ๋ฐ์ค๋ก ์ธ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์ ํน์ ํ ํฌ๊ธฐ์ 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ ๋๋ ๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์
์ ์ด์ฉํด์ผ ํ๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์!
๐ ๋ฆฌ์คํธ ๊ด๋ จ ๊ธฐํ ๋ฉ์๋
๋ฉ์๋๋ช | ์ฌ์ฉ๋ฒ | ์ค๋ช | ์๊ฐ ๋ณต์ก๋ |
append() | ๋ณ์๋ช .append() | ๋ฆฌ์คํธ์ ์์๋ฅผ ํ๋ ์ฝ์ | $O(N)$ |
sort() | ๋ณ์๋ช .sort() | ๊ธฐ๋ณธ ์ ๋ ฌ ๊ธฐ๋ฅ์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ | $O(NlogN)$ |
๋ณ์๋ช .sort(reverse=True) | ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ | ||
reverse() | ๋ณ์๋ช .reverse() | ๋ฆฌ์คํธ์ ์์์ ์์๋ฅผ ๋ชจ๋ ๋ค์ง๊ธฐ | $O(N)$ |
insert() | ๋ณ์๋ช .insert(์ธ๋ฑ์ค์์น, ๊ฐ) | ํน์ ํ ์ธ๋ฑ์ค ์์น์ ์์๋ฅผ ์ฝ์ | &O(N)$ |
count() | ๋ณ์๋ช .count(ํน์ ๊ฐ) | ๋ฆฌ์คํธ์์ ํน์ ํ ๊ฐ์ ๊ฐ์ง๋ ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ์ ๋ ์ฌ์ฉ | $O(N)$ |
remove() | ๋ณ์๋ช .remove(ํน์ ๊ฐ) | ํน์ ํ ๊ฐ์ ๊ฐ๋ ์์๋ฅผ ์ ๊ฑฐ ๊ฐ์ ๊ฐ์ง ์์๊ฐ ์ฌ๋ฌ ๊ฐ๋ฉด ํ๋๋ง ์ ๊ฑฐ |
$O(N)$ |
๋ง์ฝ ํน์ ํ ๊ฐ์ ์์๋ฅผ ๋ชจ๋ ์ ๊ฑฐํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น? ํ์ด์ฌ์์๋ remove_all()๊ณผ ๊ฐ์ ํจ์๋ฅผ ์ ๊ณตํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ค์๊ณ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ฉด ์ข๋ค.
array = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}
result = [i for i in array if i not in remove_set]
print(result)
```
์ถ๋ ฅ
[1, 2, 4]
```
'Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ์ ์๋ฃํ(Number) (0) | 2023.03.15 |
---|