본문 바로가기

학원

2023/08/21 파이썬(List, Dictionary)

 



리스트를 저장하고 엄밀히 말하자면 프린트를 사용하지않아도 ls만 해도 출력이 된다.

 

 

 

 

오른쪽 저장되어있는 리스트 내용을 왼쪽에 그대로 카피해서 넣어주는 것
그런데 왼쪽에 첫번째 요소의 값을 변경하면 변경이 되지만 첫번째 리스트에도 변경이 된다.
이건 얕은 복사라고 한다.


 

 

이것의 반대인 깊은 복사는 ls에 저장되어있던걸 복사해서 저장할때 : 를 사용해주면 된다.
이렇게 하게되면 아까같은 상황에서 변경한다고 해도 첫번째 리스트는 바뀌지않는다.




리스트의 자주 쓰이는 함수들


 

 

ls.을 찍고 탭을 누르면 사용할 수 있는 함수가 뜬다.
그리고 괄호에서 시프트 탭을 누르면 이 함수를 어떻게 사용하는지 설명이 뜬다.


 

 

append 리스트에 추가하는 용도로 사용함 추후에 추가하는 용도로 사용한다.
그냥 괄호 사이에 추가하고싶은 걸 작성해서 출력하면 추가된걸 확인할 수 있음


 

 

 

append는 이런식으로 입력해주는 input과 반복문 for을 사용해서도 활용 될 수 있음


 

 

 

그냥 원하는 리스트 목록의 sort를 사용하면 된다. sort는 기본으로 오름차순으로 정렬 하게 된다.

 

 

 

reverse를 이용해 역순으로 사용할 수 있음


 

 

 

pop은 맨 마지막에 있는 요소를 빼달라는 의미를 갖고있다.


 

 

 

index를 사용하면 내가 넣은 값이 어디에 위치하고있냐를 알 수 있음


 

 

 

insert는 원하는 위치에 원하는 것을 넣을 수 있다.


 

 

 

pop은 맨 마지막을 삭제하지만 내가 원하는 값을 삭제하고싶을 땐 remove를 사용한다.


 

 

다시 insert를 사용해서 index2에 2를 넣어준다.


 

 

리스트의 갯수를 세는 것은 count를 사용함 괄호 안에 값을 넣으면 그 값이 몇번 사용되었는지 출력된다.


 

 

len같은 경우는 길이 정보이다. len을 사용하고 리스트명을 넣어주면 길이를 알려준다.


 



[ 리스트 실습 ]


List = [ "김개똥", "2002년입사", "잘못된 사항", "등급B"]

다음과 같은 LIST에서 사용자로부터 삭제할 값을 입력 받아 삭제하고, 다음 내용을 추가하세요.

[ '김개똥', '2002년입사', '잘못된 사항', '등급B']

지울 값 입력 : 잘못된 사항
추가할 이름 입력 : 홍길동
추가할 이름 입력 : 김말이
추가할 이름 입력 : 개똥이
김개똥/2002년입사/등급B/
홍길동/2002년입사/등급B/
김말이/2002년입사/등급B/
개똥이/2002년입사/등급B/

 

 

해결할 땐 이런식으로 작성해주면 된다.

ls.remove(input())

ls_cp = ls[:]
for i in range(3):
ls_cp[0] = input()
ls.extend(ls_cp)

for i in range(lsen(ls)):
if i%3==0:
print()
print(ls[i], end='/')

강사님은 이런식으로 작성했음 삭제할 내용을 입력해주고 



리스트 안에 리스트를 넣어준다 이러한 구조를 2차원 리스트 라고 함

 

 

첫번째 요소의 1에 접근하기 위해선 2번 써주면 된다.

 

 

 

이것을 사용해서 리스트를 출력하기 위해서 반복문을 사용할 수 있을 것

 

 

 

이런식으로 더 고차원의 리스트가 생길 수 있다.
여기에 첫번째 요소에 있는 첫번째 요소의 1을 출력하고 싶다면 이런식으로 작성해줌


 

 

이렇게 고차원의 있는 리스트를 사용할 땐 이런식으로 보기좋게 정리를 하는 편

 

 

 

만약 중간에 있는 11을 출력하고 싶다면 이런식으로 작성해준다.

 

 

 

만약 이것을 반복문으로 출력하고 싶다면 이런식으로 작성해줌



 

 

랜덤은 임의의 수를 발생 시키는 것 random이라는 모듈이 있음 이런식으로 랜덤으로 뽑아준다.

 

 

 

이렇게 우리가 원하는 범위 안에서도 랜덤으로 돌려서 할 수 있음




 


이러한 랜덤 명령어를 통해 간단한 가위바위보 프로그램을 만들 수 있음
- 컴퓨터는 가위,바위, 보 중 무작위로 낸다.
- 사용자가 이긴 경우, 진 경우,비긴 경우, 잘못 낸 경우를 구분하여출력한다.

 

 

 

비겼다는 것은 com == user로 주었음




로또
- 범위 1~46이고, 추첨된 번호는 6개 보너스 번호1개이다.
- 중복된 값은 없어야한다.
- 추첨된 번호는 정렬이 되어야 한다.
- 보너스 번호는 정렬과 상관없이 마지막에 출력한다.

 

추첨된 번호에서 중복되는 숫자들은 count를 통해서 2개가 넘게되면 안되게끔 설정함
그렇게 추첨된 번호에서 정렬을 실행하고 보너스 번호는 정렬과 상관없어야 해서 밖에서 실행한다.




 



Dictionary


 

Dictionary는 key와 value를 적는다. key와 value는 :으로 구분하고 이게 하나의 요소이다.
여기서 이름은 key이고 홍길동은 value이다.
dic하면 목록을 확인할 수 있음

 

 

 

이것을 이용해서 key들만 뽑아서 확인할 수 있고 그 키를 통해서 어떤 value를 가지고 있는지 확인할 수 있음

 

 

 

구글에서 sunset sunrise 페이지에서 정보를 가져와서 그것에 대한 정보를 복사해서 붙여놨고 강사님은 가운데 있는 day_length를 출력하고 싶으면 이런식으로 하게 된다.
아까 했던 것처럼 요소 안에 요소를 넣어주면 된다.


 

 

이런식으로 dictionary에 요소는 이런식으로 넣어줄 수 있다.






dictionary의 다양한 함수


 

 

key하면 key를 보여주고 values를 하면 values를 보여준다.

 

 

items를 이용하면 key와values를 tuple 형식으로 둘다 볼 수 있다.

 

 

 

이것을 이용해서 반복문을 사용할 수 있다. 이 반복문을 사용하면 dic에 저장된 것을 다 볼 수있다.


 

 

 

get을 이용해서 key가 있으면 그에 맞는 value를 출력해주고 없으면 출력을 안해주는데 이것은 오류가 없사실 None이라는 '아무것도 없다' 라는것을 출력해주는 것


 

 

이것은 None으로 조건을 주어서 출력을 할 수 있다. 내 dic에는 5라는것은 없기 때문에 None으로 반환되고 그것이 None이면 출력하게 끔 설정했다.


 

 

 

이런식의 코드를 작성했다. 이 코드는 그냥 간단하게 저장하고 수정할 수 있게끔 해주는 프로그램이다. 하지만 이 코드에는 문제점이 있다. 1. 만약 메뉴가 존재하는데 추가하려는 경우 2. 메뉴가 없는데 수정하려는 경우의 두가지 문제점이 있음


 

 

이것을 수정하기 위해서 메뉴를 입력하는 1번과 메뉴를 수정할 3번에 if문을 넣어준다.
if문을 넣어줄 땐 메뉴를 입력 받은 후에 if문을 작성해줘야한다.