Programming/Python

[Python List] for loop ์•ˆ์—์„œ list.remove() ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•  ์ 

Taylor Kang 2021. 3. 17. 17:11

๋ฌธ์ œ์ƒํ™ฉ


ํŒŒ์ด์ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ for loop๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ ์•„์ดํ…œ์˜ ๊ฐ’์ด 3 ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ญ์ œํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

mylist์—” 1, 2 ๊ฐ’์ด ์‚ญ์ œ๋œ [3, 4, 5]๊ฐ€ ๋“ค์–ด์žˆ์„ ๊ฒƒ์ด๋ผ ์˜ˆ์ƒํ•˜์˜€๋Š”๋ฐ,

mylist = [1, 2, 3, 4, 5]

for item in mylist:
    if item < 3:
        mylist.remove(item)

 

๊ฒฐ๊ณผ๋Š” ์•„๋ž˜ ์ฒ˜๋Ÿผ 1๋งŒ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

print(mylist)
# [2, 3, 4, 5] 

 

2๋Š” ์™œ ์‚ญ์ œ ๋˜์ง€ ์•Š์•˜์„๊นŒ์š”?

๋””๋ฒ„๊น…ํ•ด๋ณด๋ฉด

  • item์ด 0๋ฒˆ ์ธ๋ฑ์Šค๋ฅผ ์ฐธ์กฐํ•˜์—ฌ mylist.remove(1)์ด ์ˆ˜ํ–‰๋˜์–ด 1์ด ์‚ญ์ œ๋˜๊ณ 
  • ๋‹ค์Œ์ธ๋ฑ์Šค์ธ 1๋ฒˆ ์ธ๋ฑ์Šค๋ฅผ ์ฐธ์กฐํ–ˆ์„ ๋•Œ, ๋ณ€๊ฒฝ๋œ ๋ฆฌ์ŠคํŠธ์—์„œ 1๋ฒˆ ์ธ๋ฑ์Šค์˜ ๊ฐ’์ธ(3)์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๋ฉด์„œ
    ์‚ญ์ œ ์ „ 1๋ฒˆ ์ธ๋ฑ์Šค์˜€๋˜ 2๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
mylist = [1, 2, 3, 4, 5]

for item in mylist:
    if item < 3:
				print(mylist,item)
        mylist.remove(item)


# [1, 2, 3, 4, 5] 1 (item-> index 0: 1)
# [2, 3, 4, 5] 3    (item-> index 1: 3)
# [2, 3, 4, 5] 4    (item-> index 2: 4)
# [2, 3, 4, 5] 5    (item-> index 2: 5)

 

 

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•


์›๋ณธ ๋ฆฌ์ŠคํŠธ(mylist)๊ฐ€ ์•„๋‹Œ ๋ฆฌ์ŠคํŠธ์˜ copy ํ•œ ๊ฐ’(mylist[:])์„ ์ˆœํšŒํ•ฉ๋‹ˆ๋‹ค.

์ˆœํšŒํ•  ๋Œ€์ƒ์ด ๋˜๋Š” copy list์˜ ๊ฐ’์„ ์ง์ ‘์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  item๋“ค์„ ๊ฒ€์‚ฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

mylist = [1, 2, 3, 4, 5]

for item in mylist[:]:
    if item < 3:
        mylist.remove(item)

print(mylist)
# [3, 4, 5]

 

 

Pythonic approach


์œ„์˜ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํ•œ์ค„๋กœ ์ž‘์„ฑ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

mylist = [1, 2, 3, 4, 5]

mynewlist = [item for item in mylist if item >= 3]

print(mynewlist)
[3, 4, 5]

 

 

Link


https://gist.github.com/alexlouden/9f1ab4354d1c68ae4c1c94126ac51a20

 

Iterating while modifying your list.md

GitHub Gist: instantly share code, notes, and snippets.

gist.github.com