파이썬에서는 [대괄호] 를 활용하여 목록을 생성할 수 있다.
이 목록에는 데이터 유형에 상관없이 모두 들어갈 수 있으며, 목록 안에 목록을 생성하는 것, 그리고 변수 또한 포함할 수 있다.
saving = '탕수육'
menu = ['짬뽕', saving, ['군만두', '물만두'], 12345]
print(menu)
['짬뽕', '탕수육', ['군만두', '물만두'], 12345]
list = ['a', 'b', 'c', 'd', 'e']
위와 같은 목록에서, 특정 데이터만 추출을 원한다면 아래의 방법들을 사용하면 된다.
list[3] #'d'
list[0] #'a'
list[-1] #'e'
list[1:4] # 'b', 'c', 'd'
list[:3] # 'a', 'b', 'c'
list[2:] # 'c', 'd', 'e'
[] 안에 있는 숫자는 목록에서 데이터의 순서를 의미한다.
순서는 0부터 시작하며 위의 목록에서 0은 'a'를 의미하고 3은 'd'를 의미하게 된다.
또한 음수를 활용하여 목록의 내림차순으로 선택이 가능한데, 이 경우 -1은 'e'를 의미한다.
: 를 활용하여 범위를 지정할 수 있다. list[1:4]
를 보면 첫번째에서 네번째까지로 범위를 지정하였는데, 시작점은 포함하지만 끝점은 포함하지 않는다.
따라서 list[1:4]
의 경우 1~3의 범위를 포함하게 된다.
list[:3]
의 경우 목록의 맨 처음부터 뒤에 지정한 범위까지 포함하게 된다.
list[2:]
의 경우는 앞에 지정한 범위에서 목록의 마지막까지 포함하게 된다.
list = [10, 20, 30, 40, 50]
위와 같은 목록이 있다고 가정했을 때 print(list[1] + list[-2])
와 같이 문법을 작성한 경우
menu =
[['물만두', '군만두', '찐만두'],
['짬뽕', '해물짬뽕', '차돌짬뽕'],
['짜장', '해물짜장', '고추짜장']]
위의 목록에서 짬뽕에 관련한 데이터만 추출하고 싶다면 list[1]
menu[1]
-> ['짬뽕', '해물짬뽕', '차돌짬뽕']해물짜장만 추출하고 싶다면 list[2][1]
첫번째 대괄호[2]는 목록을 선택하고, 두번째 대괄호[1]는 선택한 목록에서 데이터를 선택한다.
menu[2]
-> ['짜장', '해물짜장', '고추짜장']
menu[2][1]
-> ['해물짜장']
menu = ['짬뽕', 6000, '짜장면', 5000, '탕수육', 15000]
신메뉴 군만두를 5000원에 출시하게 되어서 '군만두' 와 5000 을 목록에 추가해야 한다.
menu = menu + ['군만두', 5000]
재료비가 올라서 짜장면 가격을 6000으로 변경해야 한다.
menu[3] = 6000
짬뽕이 인기가 없어 메뉴에서 삭제하기로 했다.
del(menu[:2])
메뉴판에 대격변이 일어난 후 메뉴판을 확인해보면 다음과 같다.
print(menu)
['짜장면', 6000, '탕수육', 15000, '군만두', 5000]
menu1 = ['짜장면', 6000, '탕수육', 15000, '군만두', 5000]
똑같은 메뉴판을 하나 더 만들기로 했다.
menu2 = menu1
이 경우 menu1 를 수정하면 menu2에도 반영이 되고, 반대의 경우도 마찬가지이다.
위의 명령어는 다음과 같은 결과를 보이기 때문이다.
menu1 / menu2 ➔ ['짜장면', 6000, '탕수육', 15000, '군만두', 5000]
따라서 menu2 에서 짜장면 가격을 5000원으로 내린다면 menu1의 짜장면 가격도 5000원이 된다. menu2[1] = 5000; print(menu1)
['짜장면', 5000, '탕수육', 15000, '군만두', 5000]
서로 다른 메뉴판을 만들기로 했다.
menu2 = list(menu1)
or menu2 = menu1[:]
menu1 = ['짜장면', 6000, '탕수육', 15000, '군만두', 5000]
menu2 = ['짜장면', 6000, '탕수육', 15000, '군만두', 5000]
menu2[1] = 5000
menu1 = ['짜장면', 6000, '탕수육', 15000, '군만두', 5000]
menu2 = ['짜장면', 5000, '탕수육', 15000, '군만두', 5000]