본문 바로가기

Python/Python Programming

Python_Basic_03

리스트(list)


# 만들기 : [], list()
# 읽기 : 변수명[index] <---- 변수로 생각하면된다.
# 변경 : 변수명[index] = 새로운 값
# 추가 : 변수명.insert(i, x), 변수명.append(x), 변수명.extend(o)
# 삭제 : 변수명.remove(x), 변수명.pop(i)

 

 

a = [1,2,3]
a[9] = 5

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
Input In [1], in <cell line: 2>()
      1 a = [1,2,3]
----> 2 a[9] = 5

IndexError: list assignment index out of range

 

# 인덱싱과 슬라이싱

 

# 인덱싱 : 인덱스를 사용해서 요소를 하나씩 골라내는 것

test_list = [1,2,3,4]
test_list[0] = 0
test_list[1] = 0
test_list[2] = 0

# 슬라이싱 : 인덱스를 사용해서 요소를 여러개 골라내는 것

리스트[x:y] # x~y전까지
리스트[:y] # 0부터 y전까지
리스트[x:] # x부터 끝까지

 

 

연산


산술연산(사칙, 특수)   //
+ 더하기 % 나머지
- 뺴기    
나누기 # 문자열 연산  
곱하기 + 문자열 합치기
* 거듭제곱 * 문자열 곱하기

# 로또 번호 뽑는 프로그램을 짠다.
앞쪽에서 6개 혹은 뒷쪽에서 6개의 번호를 뽑아서 출력하시오

1. 번호 원본 준비.
numbers = list(range(1,46))
2. 거기서 6개 순서대로 뽑기
print(numbers[:6])
print(numbers[-6:])
print(numbers[9:9+6])
[1, 2, 3, 4, 5, 6]
[40, 41, 42, 43, 44, 45]
[10, 11, 12, 13, 14, 15]

 

 

random.randint 사용법

random.randint(a, b)

a <= N <= b를 만족하는 임의의 정수 N을 반환합니다

 


# 1부터 45가 들어 있는 리스트를 랜덤한 순서로 바꾸자

import random as rnd
# 1. 원본을 준비한다.
numbers = list(range(1,46))
# 이걸 여러번 반복 
shuffle_count = rnd.randint(20, 100)
for _ in range(shuffle_count):
    # 2. 하나를 랜덤하게 뽑는다.
    index = rnd.randint(0,44)
    number = numbers.pop(index)
    # 3. 뽑은걸 맨 뒤에 다시 넣는다.
    numbers.append(number)
print(numbers)
[6, 13, 22, 41, 43, 44, 45, 24, 12, 23, 25, 28, 40, 3, 1, 33, 30, 11, 17, 8, 7, 38, 9, 19, 31, 15, 4, 37, 42, 18, 5, 34, 20, 39, 21, 14, 35, 32, 2, 26, 27, 16, 10, 36, 29]

 

 

random.shuffle을 사용하면 간편하게 섞을 수 있다.

import random as rnd
numbers = list(range(1,46))
rnd.shuffle(numbers)
print(numbers)
[35, 42, 14, 5, 34, 38, 6, 40, 22, 26, 9, 36, 25, 2, 4, 31, 7, 41, 10, 17, 13, 37, 21, 44, 30, 27, 23, 18, 28, 29, 20, 39, 24, 45, 1, 19, 12, 32, 8, 11, 16, 43, 33, 3, 15]

 

 

# random.shuffle을 사용해서
# 로또 번호를 생성하는 프로그램을 작성하시오.
# 단, 사용자가 몇 게임을 뽑을지 입력할 수 있어야 합니다.

import random as rnd
numbers = list(range(1,46))
game_count = input("뽑을 게임수 : ")
game_count = int(game_count)
for _ in range(game_count):
    rnd.shuffle(numbers)
    result = numbers[:6]
    result.sort() <---- 정렬하는 
    print(result)
뽑을 게임수 : 5
[10, 13, 15, 35, 39, 42]
[12, 17, 23, 34, 35, 41]
[5, 14, 15, 17, 24, 25]
[4, 7, 10, 16, 18, 38]
[2, 11, 13, 15, 25, 35]

 

#random.sample

import random as rnd
numbers = list(range(1,46))
rnd.sample(numbers, 6)
[19, 3, 36, 22, 12, 24]

 

# random.sample을 사용해서
# 로또 번호를 생성하는 프로그램을 작성하시오.
# 단, 사용자가 몇 게임을 뽑을지 입력할 수 있어야 합니다.

import random as rnd
numbers = list(range(1,46))
game_count = input("뽑을 게임수 : ")
game_count = int(game_count)
for _ in range(game_count):
    result = rnd.sample(numbers, 6)
    print(sorted(result))
뽑을 게임수 : 5
[8, 12, 14, 22, 29, 43]
[4, 6, 7, 24, 25, 43]
[5, 13, 17, 21, 36, 44]
[5, 7, 10, 17, 25, 44]
[7, 11, 17, 30, 34, 36]

 

 

딕셔너리(dict)


# 만들기 - dictionary

test = dict()
test = {}

 

# 값이 있는 것 만들기

# 단어:뜻 쌍으로 구성된다.

test = {
    키(key) : 값(value)
    "fruit":"apple",
    "name":"jake",
    "address":"seoul"
}

 

# 값 읽기

test["fruit"] = "banana"
print(test)
{'fruit': 'banana', 'name': 'jake', 'address': 'seoul'}

 

# 추가

test.update({"gender":"man"})
test
{'fruit': 'banana', 'name': 'jake', 'address': 'seoul', 'gender': 'man'}
test["abcd"] = 'hahahah'
test
{'fruit': 'banana',
 'name': 'jake',
 'address': 'seoul',
 'gender': 'man',
 'abcd': 'hahahah'}

 

# 삭제

test.pop('gender', "man")
>>> 'man'

test
>>> {'fruit': 'banana', 'name': 'jake', 'address': 'seoul', 'abcd': 'hahahah'}

test.pop('name')
>>> 'jake'

test
>>> {'fruit': 'banana', 'address': 'seoul', 'abcd': 'hahahah'}

 

 

# 혹시 그 키값이 있어?

# 키 유무 확인 가능

if 'name' in test:
    print(test['name'])
    test.pop('name')
else:
    print("없는 키값입니다.")

 

cf) 리스트 경우에는 요소

test_list = [1,2,3,4,5]
if item in test_list:
    pass
else:
    pass

 

 

 

 

문제 풀어보기


# 데이터 변수 카운팅해보기
# 각 숫자가 몇 번 나왔는지 카운팅한 결과를 딕셔너리에 저장하는 코드를 작성

ex)

1 -> 13번

2 -> 4번 

 

# 카운팅 코드 example

msg = "asdfnwefojsdfjlwsef0jsadfjlasdfn"
count_result = {}
msg에 담겨있는 한글자씩 꺼내서 본다.
for char in msg:
    꺼내온 한 글자가 count_result에 들어있는지 확인!
    if char in count_result:
        만약 들어있으면 최소 1이상의 숫자일테니 거기에 1을 더해준다.
        count_result[char] += 1
    else:
        없으면 처음 나온거니까 1로 저장한다. count_result[a] = 1 / dic[key] = value 이니까!
        count_result[char] = 1
print(count_result)
{'a': 3, 's': 5, 'd': 4, 'f': 6, 'n': 2, 'w': 2, 'e': 2, 'o': 1, 'j': 4, 'l': 2, '0': 1}

 

메뉴 1번 


# 정수 하나씩 무제한 입력받는다.
# 입력받은 정수를 카운팅 한다. 
# 데이터를 더미로 작성해보자(예시를 작성해보자)
# 메뉴 2번을 고르면 전체 카운팅을 출력하고 프로그램 종료

number_counting = {}
while True:
    print("1. 정수 입력하기")
    print("2. 카운팅 출력후 프로그램 종료")
    menu = input("메뉴 선택 : ")
    if menu == "1":
        while True:
            number = input("정수 입력 : ")
            if number == "exit":
                break
            if number not in number_counting:
                number_counting[number] = 1
            else:
                number_counting[number] += 1
    elif menu == "2":
        print(number_counting)
        break
    else:
        print("없는 메뉴입니다.")
더보기
1. 정수 입력하기
2. 카운팅 출력후 프로그램 종료
메뉴 선택 : 1
정수 입력 : 1
정수 입력 : 2
정수 입력 : 3
정수 입력 : 4
정수 입력 : 5
정수 입력 : 2
정수 입력 : 3
정수 입력 : 4
정수 입력 : 5
정수 입력 : 6
정수 입력 : 7
정수 입력 : 3
정수 입력 : 4
정수 입력 : 2
정수 입력 : 4
정수 입력 : 
정수 입력 : 6
정수 입력 : 8
정수 입력 : 9
정수 입력 : 5
정수 입력 : 4
정수 입력 : 12
정수 입력 : 4
정수 입력 : 6
정수 입력 : 86
정수 입력 : 24
정수 입력 : 5
정수 입력 : 33
정수 입력 : 43
정수 입력 : 23
정수 입력 : 42
정수 입력 : 23
정수 입력 : 4
정수 입력 : 2
정수 입력 : 23
정수 입력 : 4
정수 입력 : 2
정수 입력 : exit
1. 정수 입력하기
2. 카운팅 출력후 프로그램 종료
메뉴 선택 : 2
{'1': 1, '2': 5, '3': 3, '4': 8, '5': 4, '6': 3, '7': 1, '': 1, '8': 1, '9': 1, '12': 1, '86': 1, '24': 1, '33': 1, '43': 1, '23': 3, '42': 1}