์ง๊ธ๊น์ง, ์ ์, ์ค์ ๋ฌธ์์ด์ ๋ค๋ฃจ๋ ๋ฒ์ ๋ฐฐ์ ๋ค. ๊ทธ๋ฐ๋ฐ ํ๋์ ๊ฐ ๋ง๊ณ , ์ฌ๋ฌ๊ฐ๋ฅผ ๋ค๋ฃฐ ํ์๊ฐ ์๋ค๋ฉด ์ด๋กํด์ผํ ๊น? ์ด๋ฐ ์ฉ๋๋ฅผ ์ํด python์ ๋ฆฌ์คํธ๋ฅผ ์ ๊ณตํ๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ํนํ ์๋ก ๋ค๋ฅธ ํ์ ์ ๊ฐ๊ณผ ๋ณ์ ๋ฅผ ํจ๊ป ๋ค๋ฃจ๋ฉด์ ์ฝ๊ณ /์ธ ์ ์๋ค๋ ์ฅ์ ์ ์ ๊ณตํ๋ค.
List
์์
>>> a[1:2] [2]
>>> a[1:2] = [โaโ, โbโ, โcโ]
>>> a
[1, โaโ, โbโ, โcโ, 4]>>> a[1] = [โaโ, โbโ, โcโ]
>>> a
[1, [โaโ, โbโ, โcโ], 4]2๋ฒ ์์ ์์ ๋ฆฌ์คํธ๋ฅผ a[1:2] = [โaโ, โbโ, โcโ]๋ก ์์ ํ๋ ๊ฒ๊ณผ a[1] = [โaโ, โbโ, โcโ]๋ก ์์ ํ๋ ๊ฒ์ ์ ํ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ๊ฒ ๋๋ฏ๋ก ์ฃผ์ํด์ผ ํ๋ค. a[1] = [โaโ, โbโ, โcโ]๋ ๋ฆฌ์คํธ a์ ๋ ๋ฒ์งธ ์์๋ฅผ [โaโ, โbโ,โcโ]๋ก ๋ฐ๊พผ๋ค๋ ๋ง์ด๊ณ
a[1:2]๋ a[1]์์ a[2] ์ฌ์ด์ ๋ฆฌ์คํธ๋ฅผ [โaโ, โbโ, โcโ]๋ก ๋ฐ๊พผ๋ค๋ ๋ง์ด๋ค. ๋ฐ๋ผ์ a[1] = [โaโ, โbโ, โcโ]๋ก ์์ ํ๊ฒ ๋๋ฉด ์์๋ ๋ฌ๋ฆฌ ๋ฆฌ์คํธ a๊ฐ [1, [โaโ, โbโ,โcโ], 4]๋ผ๋ ๊ฐ์ผ๋ก ๋ณํ๊ฒ ๋๋ค.
์ญ์
[ ] ์ฌ์ฉํด ๋ฆฌ์คํธ ์์ ์ญ์ ํ๊ธฐ
>>> a[1:3] = [ ]
>>> a
[1, โcโ, 4]del ํจ์ ์ฌ์ฉํด ๋ฆฌ์คํธ ์์ ์ญ์ ํ๊ธฐ
>>> a
[1, โcโ, 4]
>>> del a[1]
>>> a
[1, 4]๋ฆฌ์คํธ ๊ด๋ จ ํจ์
append
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]sort
>>> a = [1, 4, 3, 2]
>>> a.sort()
>>> a
[1, 2, 3, 4]>>> a = [โaโ, โcโ, โbโ]
>>> a.sort()
>>> a
[โaโ, โbโ, โcโ]insert
>>> a = [1, 2, 3]
>>> a.insert(0, 4)
[4, 1, 2, 3]remove
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3)
[1, 2, 1, 2, 3]์ฒซ๋ฒ์งธ๋ก ๋์ค๋ ๋ ์์ ์ญ์ ํ๋ค.
pop
pop( )์ ๋ฆฌ์คํธ์ ๋งจ ๋ง์ง๋ง ์์๋ฅผ ๋๋ ค ์ฃผ๊ณ ๊ทธ ์์๋ ์ญ์ ํ๋ ํจ์์ด๋ค.
>>> a = [1,2,3] >>> a.pop()
3
>>> a
[1, 2]๋ฆฌ์คํธ ์์ดํ ์ดํดํ๊ธฐ
course = [ "Python", "Javascript", "C++", "__reserved__" ]
course[3] = "Go"์ด๋ฌ๋ฉด ๋ฆฌ์คํธ ์์๋ฅผ ๋ฐ๊ฟ ์ ์๋ค.
course[1].upper()
>>> JAVASCRIPT๊ฐ ๋ฆฌ์คํธ ์์์ ํ์ ์ ๋ฐ๋ฅธ ๋ฉ์๋๋ฅผ ํ์ฉํ ์ ์๋ค.
newStr = course[1] + " language"
>>> Javascript language1๋ฒ ์์๊ฐ str ์ด๊ธฐ ๋๋ฌธ์ ๋ํด์ ์๋ก์ด string ์ ๋ง๋ค ์ ์๋ค.
print(len(course))
print(max(course))
print(min(course))
print(sorted(course))
print(sorted(course, reverse = True))>>> 4
>>> python
>>> C++
>>> ['C++', 'Go', 'Javascript', 'python']
>>> ['python', 'Javascript', 'Go', 'C++']
>>> ['python', 'Javascript', 'C++', 'Go', 'HTML', 'CSS3']in ์ฐ์ฐ์
print("C" in course)
print(1 in [0,1,2,3])
>>> False
>>> True๋ฆฌ์คํธ ์์ ํด๋น ์์๊ฐ ์๋์ง ๊ฒ์ฌํ๋ ์ฐ์ฐ์ ์ด๋ค. ๋งค์ฐ ์ ์ฉํ๋ค!
List Slicing
๊ธฐ์กด์ String ์์ Slicing ์ ๋ฐฐ์ ๋๋ฐ, ๋น์ทํ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค.
print(course[0:4:2])
print(course[1:4:2])
>>> ['Javascript', 'C++']
>>> ['Python', 'C++']์ด ๋ ๋ค์์ ๋ถํฐ ๊ฑฐ๊พธ๋ก ๋ถ๋ฌ์ฌ ์๋ ์๋๋ฐ, ์ด ๋ถ๋ถ์ ๊ธฐ์ตํด ๋๋ ๊ฒ์ด ์ค์ํ๋ค.
print(course[::-1])
print(course[4:0:-2])
>>> ['__reserved__', 'C++', 'Javascript', 'Python']
>>> ['__reserved__', 'Javascript']์์์ ์ ๋์ผ๋ก, ์ข ๋ฃ์ง์ ์ ์์ ์๋ ์ธ๋ฑ์ค๋ก ์ ํํ๊ณ , ๋งจ๋ค์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ถํธ๋ฅผ ๊ฑฐ๊พธ๋ก ํด์ ์ฃผ๋ฉด ์์ ๊ฐ์ด ์ถ๋ ฅ๋๋ค. ์ฆ. ๋งจ๋ค์ ํ๋ผ๋ฏธํฐ๋ ๋ฑ์ฐจ์์ด์ ๊ณต์ฐจ๋ผ ์๊ฐํ๋ฉด ์ข๋ค.
List copy, aliasing
ํ์ด์ฌ์ C++ ์ฒ๋ผ ์ ์ธ์ ํ ๋, ๊ณ์ํด์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ด ์ ์ฅ๋๋ ํ์์ด ์๋, ๋ง์ฝ ๊ฐ์ ๊ฐ์ ์ ์ธํ๋ค๋ฉด ํด๋น ๋ณ์ ์์๋ ๊ฐ์ด ์ ์ฅ๋์ด ์๋ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค. ์ฆ, ๊ธฐ๋ณธ์ ์ผ๋ก Shallow copy๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ค. ๋ฐ๋ผ์ ๋ด๊ฐ ํน์ ๋ณ์๋ฅผ ๋ค๋ฅธ ๋ณ์์ด๋ฆ์ผ๋ก ๊ฐ์ ธ์จ๋ค๋ฉด C++์ ์ฐธ์กฐ๋ณ์์ ๊ฐ์ ๊ฐ๋ ์ผ๋ก ์๋ํ๋ค.
course = [ "Python", "Javascript", "C++", "__reserved__" ]
courseAliasing = course # Alising
print(courseAliasing)
>>> [ "Python", "Javascript", "C++", "__reserved__" ]์ด ๋ courseAliasing ๋ณ์๋ course ๋ณ์๊ฐ ์๋ํ๋ ๋ฐฉ์๊ณผ ๋๊ฐ์ด ๊ฐ๊ฐ์ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฃผ์๋ค์ด ๋ฌถ์ฌ์๋ ๋
์์ด ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ course ์์ ๋ค์ด๊ฐ ์์๋ค์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋๊ฐ์ด ๋ณต์ฌํ ๋
์์ด ๊ฐ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? ๋ฅ์นดํผ๋ฅผ ํ๊ณ ์ถ๋ค๋ฉด?
courseCopy = course[:]
print(courseCopy)
>>> [ "Python", "Javascript", "C++", "__reserved__" ]์ด๋ ๊ฒ ์จ์ฃผ๋ฉด ๋๋ค. ์ฆ, ์ฌ๋ผ์ด์ฑ์ ํ๊ฒ ๋๋ฉด DeepCopy ๋ฐฉ์์ผ๋ก ์๋ ํ๋ค. ์์ ๋ ๋ฆฌ์คํธ ์์์ ๊ฐ์ ๋ฐ๊ฟ๋ณด๋ฉฐ ์ฐจ์ด๋ฅผ ํ์ธํด๋ณด์.
print("[Before]")
print("course: ", course)
print("courseAliasing: ",courseAliasing)
print("courseCopy: ", courseCopy)
courseAliasing[3] = "CSS3"
courseCopy[3] = "HTML5"
print("[After]")
print("course: ", course)
print("courseAliasing: ",courseAliasing)
print("courseCopy: ", courseCopy)courseAliasing ๋ฆฌ์คํธ์ ๊ฐ์ ๋ฐ๊พผํ, ์๋ course ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅํด ๋ณด๊ณ , courseCopy ๋ฆฌ์คํธ์ ๊ฐ์ ๋ฐ๊พผํ ์ถ๋ ฅํด๋ณด์.
[Before]
course: ['Python', 'Javascript', 'C++', '__reserved__']
courseAliasing: ['Python', 'Javascript', 'C++', '__reserved__']
courseCopy: ['Python', 'Javascript', 'C++', '__reserved__']
[After]
course: ['Python', 'Javascript', 'C++', 'CSS3']
courseAliasing: ['Python', 'Javascript', 'C++', 'CSS3']
courseCopy: ['Python', 'Javascript', 'C++', 'HTML5']
courseAliasing ๋ณ์๋ฅผ ๋ณํ์ํค๋ course ์์์ ๊ฐ๋ ๋ณํํ๋ค. ๊ทธ๋ฆฌ๊ณ courseCopy ๊ฐ์ course ์ ๋ณ๊ฐ๋ก ์๋ํ๋ ๊ฒ์ ์ ์ ์๋ค.
์ ๋ ฅ ํ๋ผ๋ฏธํฐ๋ก์ ๋ฆฌ์คํธ
C++ ์์๋ ์ ๋ ฅํ๋ผ๋ฏธํฐ๋ก ๊ฐ์ ๋๊ธฐ๋ฉด, ์ด ๊ฐ์ ํจ์๋ด์์ ์ ์๋ ๋ณ์์ ๋ฅ์นดํผ๋ฅผ ํด์ ๊ฐ์ ธ์จ ๋ค์ ์ฒ๋ฆฌ๋ฅผ ๊ฑฐ์น ํ ๋ฆฌํดํ๊ณ , ์์ ์ง์ญ๋ณ์๋ค์ ์ฌ๋ผ์ง๋ค.
ํ์ง๋ง ํ์ด์ฌ์ ๊ธฐ๋ณธ์ ์ผ๋ก c++ ์์์ ์ฐธ์กฐ๋ณ์๋ก ๋ชจ๋ ๊ฒ์ด ๋์๊ฐ๊ธฐ ๋๋ฌธ์, ๋ด๊ฐ ํจ์์ ์ ๋ ฅ๋ณ์๋ก ๋ฆฌ์คํธ๋ฅผ ์ ๋ฌํ ํ, ํจ์๋ด์์ ๋ฆฌ์คํธ ๋ด๋ถ๋ฅผ ์์ /๋ณ๊ฒฝํ ๊ฒฝ์ฐ ํจ์๊ฐ ๋๋ ํ์๋ ์ฌ์ ํ ๋ฆฌ์คํธ๋ ์์ ๋ ์ํ๋ก ์ ์ง๋๋ค.
def removeTailItem(givenList):
del givenList[-1]
print("[in removeTailItem] ", givenList)๋ค์๊ณผ ๊ฐ์ด ๋ฆฌ์คํธ์ ๊ฐ์ฅ ๋๊ฐ์ ์ง์ฐ๋ ํจ์๋ฅผ ๋ง๋ค์๋ค.
course = [ "Python", "Javascript", "C++", "__reserved__" ]
print("[Before function call] ", course)
removeTailItem(course)
print("[After function call] ", course)๊ทธ๋ฆฌ๊ณ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ , ํจ์์คํ ์ด์ ๊ณผ ์ดํ์ course ๋ฆฌ์คํธ ๋ณ๊ฒฝ์ด ๋์๋ ์ง ํ์ธํด๋ณด์.
[Before function call] ['Python', 'Javascript', 'C++', '__reserved__']
[in removeTailItem] ['Python', 'Javascript', 'C++']
[After function call] ['Python', 'Javascript', 'C++']
course ์ ์์๊ฐ ๋ณ๊ฒฝ๋ ๊ฒ์ ์ ์ ์๋ค.
์ค์ฒฉ๋ ๋ฆฌ์คํธ
C++๊ณผ ๊ฐ์ด ๋ฆฌ์คํธ์์ ์์๋ก ๋ฆฌ์คํธ๋ฅผ ์ค ์ ์๋ค. ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ผ๋ฏ๋ก ์๋ตํ๋๋ก ํ๊ฒ ๋ค.
Method of List
์ญ์ ๋ฆฌ์คํธ๋ก ํด๋์ค๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ method๊ฐ ์๋ค. ๊ผญ ํ์ํ ๊ฒ๋ง ์ ๋ฆฌ ํด๋ณด๋ฉด,
append(): ๋ฆฌ์คํธ์ ์์ดํ ์ ๋ง์ง๋ง์ ์ถ๊ฐํจextend(): ๋ฆฌ์คํธ์ ์ฃผ์ด์ง ๋ฆฌ์คํธ์ ์์ดํ ์ ๋ง์ง๋ง์ ์ถ๊ฐํจinsert(): ๋ฆฌ์คํธ์ ์ฃผ์ด์ง ์์น์ ์ฃผ์ด์ง ์์ดํ ์ ์ฝ์ ํ๊ณ , ์ฝ์ ๋ ์์น์ ๊ธฐ์กด ์์ดํ ์ ๋ค์ ์์นํ๋๋ก ํจremove(): ๋ฆฌ์คํธ๋ด์์ ์ฃผ์ด์ง ์์ดํ ๊ณผ ๋์ผํ ์์ดํ ์ ๋ชจ๋ ์ ๊ฑฐํจcount(): ๋ฆฌ์คํธ์์ ์ฃผ์ด์ง ์์ดํ ๊ณผ ๋์ผํ ์์ดํ ์ ๊ฐฏ์๋ฅผ ์นด์ดํธํจsort(): ๋ฆฌ์คํธ๋ด์ ์์ดํ ์ ์์๋๋ก ์ ๋ ฌํจreverse(): ๋ฆฌ์คํธ๋ด์ ์์ดํ ์ ์ญ์์ผ๋ก ์ ๋ ฌํจpop(): ๋ฆฌ์คํธ์ ๋ง์ง๋ง ์์ดํ ์ ๋๋ ค์ฃผ๋ฉด์, ํด๋น ์์ดํ ์ ๋ฆฌ์คํธ์์ ์ ๊ฑฐํจ
pop ํ๊ธฐ
course = [ "Python", "Javascript", "C++", "__reserved__" ]
print(course)
print(course.pop())
print(course)
>>> ['Python', 'Javascript', 'C++', '__reserved__']
>>> __reserved__
>>> ['Python', 'Javascript', 'C++']์ ๋ ฌํ๊ธฐ
course.sort()
print(course)
>>> ['C++', 'Javascript', 'Python']๊ฑฐ๊พธ๋ก ์ ๋ ฌํ๊ธฐ
course.sort(reverse = TRUE)
print(course)
>>> ['Python', 'Javascript', 'C++']๋ค์ ์์ ์ถ๊ฐํ๊ธฐ
course.append("Go")
course.append(["HTML5", "CSS3"])
print(course)
>>> ['C++', 'Javascript', 'Python']
>>> ['C++', 'Javascript', 'Python', 'Go', ['HTML5', 'CSS3']]๊ฑฐ๊พธ๋ก ์ถ๋ ฅํ๊ธฐ
course.reverse()
print(course)
>>> [['HTML5', 'CSS3'], 'Go', 'Python', 'Javascript', 'C++']ํด๋น ์์ ๊ฐ์ ์ถ๋ ฅํ๊ธฐ
print(course.count("C++"))
>>> 1๋ฆฌ์คํธ ํ์ด์ ์ถ๊ฐํ๊ธฐ
course.extend(["what", 3, "question"])
print(course)
>>> [['HTML5', 'CSS3'], 'Go', 'Python', 'Javascript', 'C++', 'what', 3, 'question']์์ ์ง์ฐ๊ธฐ
del course[0]
print(course)
>>> ['Go', 'Python', 'Javascript', 'C++', 'what', 3, 'question']ํด๋น ์์์ ์ธ๋ฑ์ค ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
index_C = course.index('C++')
print(index_C)
>>> 3์ฝ์ ํ๊ธฐ
course.insert(4, love)
print(course)
>>> ['Go', 'Python', 'Javascript', 'C++', 'love', 'what', 3, 'question']4๋ฒ ์ธ๋ฑ์ค ์์น์ ์ฝ์ ํ๋ค.