[Python] ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒํ˜•

๐Ÿ“‚ ๋ฆฌ์ŠคํŠธ

๋ฆฌ์ŠคํŠธ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†์ ์œผ๋กœ ๋‹ด์•„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ด์ฌ์˜ ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒํ˜•์€ 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