자료구조.py

2023. 3. 11. 00:37·python
## 리스트

subway = ["a", "b", "c"]

# subway변수 내 b의 위치 찾기
print("subway.index(\\"b\\") : ", subway.index("b"))

# "d"를 subway 리스트 가장 뒤에 삽입함.
subway.append("d")
print("subway.append(\\"d\\") : ",subway)

# "e" 를 b와 c 사이에 삽입
subway.insert(2, "e")
print("subway.insert(2, \\"e\\") : ",subway)

# subway 리스트를 뒤에서 한개씩 꺼냄
print(subway.pop())
print("subway.pop() : ",subway)

# 같은 이름의 사람이 몇명 있는지 확인
subway.append("c")
print("subway.count(\\"c\\") : ",subway.count("c"))

# 정렬 가능 sort : 정순 / reverse : 역순
subway.sort()
print("subway.sort() : ",subway)
subway.reverse()
print("subway.reverse() : ",subway)

# subway의 내용을 모두 지우기
subway.clear()
print("subway.clear() : ",subway)

# 다양한 자료형을 함께 사용 가능.
mix_list = ["조세호", 20, True]

# 리스트 확장
subway = ["a", "b", "c"]
subway.extend(mix_list)
print("subway.extend(mix_list) : ",subway)
  • 리스트 : 변수 = [1,2,3]
    ㄴ append, insert, pop, append, sort, reserve 등 다양한 함수를 사용할 수 있다.
    ㄴ n~m까지의 숫자를 한번에 넣으려면 range(n:m) 를 사용하면 좋다.
         다만 위 경우, range값으로 들어가기 때문에 list로 한번 감싸줘야 한다.
## 사전(dictionary)
# 사전은 { } 를 사용한다, key : value 로 이루어져 있음.
cabinet = {3:"c", 2:"b"}

# cabinet변수에서 키값을 통해 value 찾기.
print(cabinet[3])
print(cabinet.get(3))

# 사전에 없는 키값을 검색 시,
# 변수[key]는 에러가 발생
# 변수.get(key)는 `None`을 출력한다.
# print(cabinet[5])
# (key , "대체값") 사용 시 `None` 대신 `대체값`출력
print(cabinet.get(5, "사용 가능"))

# key 가 cabinet안에 있으면 True / 없으면 False
print("3 in cabinet : ",3 in cabinet)

# 정수가 아닌 string으로도 출력할 수 있다.
cabinet = {"A-3":"조씨", "B-1":"차씨"}
print(cabinet["A-3"])

# cabinet안의 값 추가 / 변경
print(cabinet)
cabinet["A-3"] = "김씨"
cabinet["C-2"] = "변씨"
print(cabinet)

# cabinet의 값 제거
del cabinet["A-3"]
print(cabinet)

# key : key값만출력 / values : value값만 출력
print(cabinet.keys())
print(cabinet.values())
# items : key와 value를 매칭하여 출력
print(cabinet.items())

# cabinet 변수를 초기화
cabinet.clear()
print(cabinet)
  • 사전 : 변수 = {키:"값", 키:"값"}
    ㄴ 조금 낯선 개념이긴 한데, 변수[키] or 변수.get[키] 를 통해 매칭되는 값을 찾을수 있다.
    ㄴ 변수[키] = 값을 통해 값을 바꾸거나 추가할 수 있다.
## 튜플
# 튜플은 리스트와 다르게 리스트 변경이 되지 않지만 속도가 리스트보다 빠름
menu = ("돈까스", "치즈돈까스")
print(menu)

# 아래와 같이 추가할 수 없음
# menu.add("생선까스")

# 아래와 같이 선언하면 여러가지 변수를 한번에 선언할 수 있다.
(name, age, hobby) = ("조씨", "29", "게임")
print(name, age, hobby)
  • 튜플 : 변수 = (값, 값) ㄴ 튜플은 리스트와 다르게 변경이 불가하지만 속도가 빠르다.
    ㄴ 보통 변하지 않는 고정값에 많이 사용하며, 여러변수를 한번에 선언할 수도 있다.
## 집합 (set)
# 중복 X , 순서 x
my_set = {1,2,3,4,5,4,3}
# 1,2,3,4,5 만 출력된다. 4,3은 중복이라서 제외됨
print(my_set)

# set 선언 2가지 방법.
set1 = {'a','b','c'}
set2 = set(["a","d"])

# set1과 set2의 교집합 구하기
print(set1&set2)
print(set1.intersection(set2))

# set1과 set2의 합집합 구하기
print(set1|set2)
print(set1.union(set2))

# set1에서 set2의 차집합 구하기
print(set1-set2)
print(set1.difference(set2))

# set2에 값을 추가하기
set1.add('f')
print(set1)
print(sorted(set1))

# set1에 값을 제거하기
set2.remove('d')
print(set2)
  • 세트 : 변수 = {값, 값} ㄴ &, |, - 등 연산자를 사용해 set끼리 교집합, 차집합 등을 구할 수 있다. (+는 없다)
## 자료구조를 변경하기
# 처음 시작은 set
print(my_set, type(my_set))

# list로 변경
my_set = list(my_set)
print(my_set, type(my_set))

# tuple로 변경
my_set = tuple(my_set)
print(my_set, type(my_set))

# set 으로 변경
my_set = set(my_set)
print(my_set, type(my_set))
  • list , tuple, set (변수) 를 사용하여 타입을 변경할 수 있다.
## 퀴즈4
'''
댓글 작성자중 추첨을 통해 1명은 치킨, 3명은 커피 쿠폰을 뽑는 추첨프로그램 작성
1. 댓글은 20명이 작성했다고 가정하고 아이디는 1~20
2. 댓글 내용과 상관없이 무작위로 추첨하되 중복 불가
3. random 모듈의 suffle / sample 활용
'''

from random import *

# range를 통해 범위를 한번에 list에 작성.
comment = list(range(1,21))

print(comment, type(comment))

# 리스트 섞기
shuffle(comment)
print(comment)

# 나는 하나를 뽑고 제거했는데 선생님은 4개를 뽑고 1/4으로 나눔
# sample로 뽑았을때 list로 들어가는것도 확인하기
chicken = sample(comment,1)
comment.remove(chicken[0])
print("치킨 담청자 : ",chicken)

print(comment)
print("커피 담청자 : ",sample(comment,3))
  • random 기능중 shuffle(섞기), sample(뽑기) 기능을 기억해두자

'python' 카테고리의 다른 글

함수.py  (0) 2023.03.11
분기.py  (0) 2023.03.11
문자열.py  (0) 2023.03.08
연산자.py  (0) 2023.03.07
자료형.py  (0) 2023.03.07
'python' 카테고리의 다른 글
  • 함수.py
  • 분기.py
  • 문자열.py
  • 연산자.py
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (162) N
      • python (30)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (30)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
      • 에러일기 (1)
      • AWS (24) N
      • Jmeter (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    postman
    리눅스
    vi에디터
    qa
    테스트 계획서
    LOSTARK
    로스트아크api
    사드웨어리소스
    테스트 계획서 만들어보기
    앱공존성
    네트워크 테스트
    쿠버네티스
    linux
    python
    QAKOREA
    로스트아크
    e2c
    .cpu
    application log
    개발자에서아키텍트로
    도커
    API
    테스트스크립트
    애플리케이션로그
    cka
    공존성테스트
    테스트 결과보고서
    스터디
    포스트맨
    k8s
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
자료구조.py
상단으로

티스토리툴바