[Python List] for loop ์์์ list.remove() ์ฌ์ฉ ์ ์ฃผ์ํ ์
๋ฌธ์ ์ํฉ
ํ์ด์ฌ ๋ฆฌ์คํธ๋ฅผ 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