반응형

Python에서 JSON(JSON(JavaScript Object Notation))은 데이터를 구조적으로 표현하기 위한 포맷으로, 웹 애플리케이션에서 자주 사용됩니다. Python에서 JSON을 처리하는 방법은 json 모듈을 사용하여 쉽게 다룰 수 있습니다. 이 모듈을 통해 JSON 데이터를 파싱하거나 직렬화(serialize)할 수 있습니다.

 

다음은 Python을 활용한 JSON 처리 방법 3가지와 예시입니다:

1. JSON 문자열을 Python 객체로 변환 (JSON 파싱)

json.loads() 함수를 사용하여 JSON 형식의 문자열을 Python 객체로 변환할 수 있습니다. 이 함수는 JSON 문자열을 파싱하여 Python의 데이터 타입(딕셔너리, 리스트 등)으로 변환합니다.

import json

# JSON 형식의 문자열
json_string = '{"name": "Alice", "age": 30, "city": "New York"}'

# JSON 문자열을 Python 객체로 변환
data = json.loads(json_string)

# 변환된 데이터 출력
print(data)  # {'name': 'Alice', 'age': 30, 'city': 'New York'}
print(type(data))  # <class 'dict'>

 

2. Python 객체를 JSON 문자열로 변환 (직렬화)

json.dumps() 함수를 사용하여 Python 객체를 JSON 형식의 문자열로 변환할 수 있습니다. 이 함수는 Python 객체(예: 딕셔너리, 리스트 등)를 JSON 문자열로 직렬화합니다.

import json

# Python 객체 (딕셔너리)
data = {
    "name": "Bob",
    "age": 25,
    "city": "San Francisco"
}

# Python 객체를 JSON 문자열로 변환
json_string = json.dumps(data, indent=4)

# JSON 문자열 출력
print(json_string)
# 출력
{
    "name": "Bob",
    "age": 25,
    "city": "San Francisco"
}

indent 인자를 사용하여 출력 형식을 더 읽기 쉽게 할 수 있습니다.

 

3. JSON 파일 읽기 및 쓰기

Python에서 json.load()와 json.dump()를 사용하여 JSON 파일을 읽고 쓸 수 있습니다.

 

예시 1: JSON 파일 쓰기

import json

# Python 객체 (딕셔너리)
data = {
    "name": "Charlie",
    "age": 35,
    "city": "Los Angeles"
}

# JSON 파일에 데이터 쓰기
with open('data.json', 'w') as file:
    json.dump(data, file, indent=4)

 

예시 2: JSON 파일 읽기

import json

# JSON 파일에서 데이터 읽기
with open('data.json', 'r') as file:
    data = json.load(file)

# 읽은 데이터 출력
print(data)
# 출력
{'name': 'Charlie', 'age': 35, 'city': 'Los Angeles'}

 

요약

  1. json.loads() : JSON 문자열을 Python 객체로 변환.
  2. json.dumps() : Python 객체를 JSON 문자열로 변환.
  3. json.load() : JSON 파일을 읽어 Python 객체로 변환.
  4. json.dump() : Python 객체를 JSON 파일에 저장.

이렇게 json 모듈을 사용하면 JSON 데이터를 쉽고 효율적으로 처리할 수 있습니다.

반응형

'프로그래밍 > [ Python ]' 카테고리의 다른 글

[Python] 예외처리 try, except  (0) 2024.11.14
[Python] map  (0) 2024.11.13
[Python] List Comprehension  (0) 2024.11.12
[Python] Files (파일 관련)  (1) 2024.02.26
[python] pass, continue, break 활용법  (0) 2021.06.20
반응형

파이썬에서 예외 처리(Exception Handling)는 프로그램 실행 중 발생할 수 있는 오류를 처리하기 위한 기법입니다. 예외 처리 덕분에 오류가 발생해도 프로그램이 비정상적으로 종료되지 않고, 지정된 대체 작업을 수행하거나 오류 메시지를 사용자에게 적절히 제공할 수 있습니다.

기본적인 예외 처리 구문

파이썬에서 예외 처리는 try, except, else, finally 구문을 사용합니다.

  • try: 예외가 발생할 수 있는 코드를 작성합니다.
  • except: 예외가 발생했을 때 처리할 코드를 작성합니다.
  • else: 예외가 발생하지 않았을 때 실행할 코드를 작성합니다.
  • finally: 예외 발생 여부와 상관없이 항상 실행되는 코드를 작성합니다.

 

기본 구조

try:
    # 예외가 발생할 수 있는 코드
except ExceptionType as e:
    # 예외 처리 코드
else:
    # 예외가 발생하지 않았을 경우 실행되는 코드
finally:
    # 항상 실행되는 코드 (자원 정리 등)

 

 

예시 1: 0으로 나누기 예외 처리

try:
    x = 10 / 0  # 0으로 나누기 시도
except ZeroDivisionError as e:
    print(f"오류 발생: {e}")
else:
    print("예외가 발생하지 않았습니다.")
finally:
    print("예외 처리 완료.")

 

설명: 0으로 나누기를 시도하면 ZeroDivisionError가 발생하고, 예외 처리 코드가 실행됩니다.

 

 

예시 2: 파일 열기 예외 처리

try:
    with open("non_existent_file.txt", "r") as f:
        content = f.read()
except FileNotFoundError as e:
    print(f"파일을 찾을 수 없습니다: {e}")
else:
    print("파일 읽기 성공")
finally:
    print("파일 처리 완료.")

설명: non_existent_file.txt라는 파일이 존재하지 않아 FileNotFoundError가 발생합니다. 예외 처리에서 오류 메시지가 출력됩니다.

 

 

예시 3: 사용자 입력에 대한 예외 처리

try:
    number = int(input("숫자를 입력하세요: "))  # 숫자로 변환
except ValueError as e:
    print(f"유효하지 않은 숫자 입력: {e}")
else:
    print(f"입력한 숫자는 {number}입니다.")
finally:
    print("입력 처리 완료.")

설명: 사용자가 숫자가 아닌 값을 입력할 경우 ValueError가 발생하고 예외 처리 코드가 실행됩니다.

 

예외 처리에서 주의할 점

  • 구체적인 예외를 처리하는 것이 좋습니다. except Exception처럼 모든 예외를 처리하면, 어떤 오류가 발생했는지 추적하기 어려울 수 있습니다.
  • 예외 처리 코드 내에서 불필요한 로직을 작성하지 않도록 하여 코드가 복잡해지지 않도록 합니다.
  • finally 구문은 자원 해제나 파일 닫기 등, 반드시 실행되어야 하는 코드에 유용합니다.

이러한 예외 처리 기법을 활용하면 프로그램이 예기치 않은 오류로 종료되지 않고 안정적으로 동작할 수 있습니다.

반응형

'프로그래밍 > [ Python ]' 카테고리의 다른 글

[Python] JSON 처리  (0) 2024.11.15
[Python] map  (0) 2024.11.13
[Python] List Comprehension  (0) 2024.11.12
[Python] Files (파일 관련)  (1) 2024.02.26
[python] pass, continue, break 활용법  (0) 2021.06.20
반응형

map() 함수는 주어진 함수를 iterable의 각 항목에 적용하여 새로운 iterable을 반환하는 함수입니다. 특히 반복문을 사용할 때 보다 간결한 코드로 변환할 수 있어 유용합니다.

 

map() 함수

map() 함수는 다음과 같은 구문을 가집니다:

map(function, iterable)

 

 

  • function: 각 항목에 적용할 함수.
  • iterable: 반복 가능한 객체(리스트, 튜플 등).

map() 함수는 function을 iterable의 모든 요소에 적용하고, 그 결과를 새로운 iterable로 반환합니다. 결과는 map 객체로 반환되므로, 이를 리스트나 다른 자료형으로 변환해야 사용할 수 있습니다.

 

 

예시 1: 리스트의 모든 값을 제곱하기

map() 함수와 lambda 함수를 사용하여 리스트의 모든 값을 제곱할 수 있습니다.

numbers = [1, 2, 3, 4, 5]
squares = map(lambda x: x ** 2, numbers)
print(list(squares))

 

 

출력:

[1, 4, 9, 16, 25]

 

 

예시 2: 문자열 리스트에서 대문자로 변환하기

map()을 사용하여 문자열 리스트의 모든 요소를 대문자로 변환할 수 있습니다.

words = ["apple", "banana", "kiwi"]
uppercase_words = map(str.upper, words)
print(list(uppercase_words))

 

출력:

['APPLE', 'BANANA', 'KIWI']

 

 

예시 3: 두 리스트의 각 항목 더하기

map()을 사용하여 두 개의 리스트에서 같은 위치의 항목을 더할 수 있습니다. 이때 zip()과 결합하여 사용할 수 있습니다.

list1 = [1, 2, 3]
list2 = [4, 5, 6]
summed = map(lambda x, y: x + y, list1, list2)
print(list(summed))

 

출력:

[5, 7, 9]

 

 

요약

  • map() 함수는 주어진 함수를 iterable의 각 요소에 적용할 때 유용합니다.
  • 코드가 간결해지고, 반복문을 사용하지 않고도 같은 작업을 할 수 있어 가독성이 높아집니다.
  • lambda 함수와 결합하여 짧고 효율적으로 사용할 수 있습니다.
반응형

'프로그래밍 > [ Python ]' 카테고리의 다른 글

[Python] JSON 처리  (0) 2024.11.15
[Python] 예외처리 try, except  (0) 2024.11.14
[Python] List Comprehension  (0) 2024.11.12
[Python] Files (파일 관련)  (1) 2024.02.26
[python] pass, continue, break 활용법  (0) 2021.06.20
반응형

파이썬에서 자주 사용하는 기능 중 하나는 리스트 컴프리헨션(List Comprehension) 입니다. 이 기능은 기존의 리스트를 기반으로 새로운 리스트를 간결하고 효율적으로 생성할 수 있게 해줍니다.

# 1부터 10까지의 숫자 중 짝수만 추출하여 새로운 리스트 생성
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [x for x in numbers if x % 2 == 0]

print(even_numbers)  # 출력: [2, 4, 6, 8, 10]

 

이 코드에서는 x for x in numbers if x % 2 == 0를 사용하여 리스트의 각 요소를 순회하면서 짝수인 값만 필터링하여 새로운 리스트를 만듭니다. 리스트 컴프리헨션을 사용하면 for문을 이용해 새로운 리스트를 만드는 것보다 코드가 간결하고 읽기 쉬워집니다.

 

리스트 컴프리헨션을 활용한 다양한 예시를 소개할게요. 각각의 예시는 파이썬에서 자주 사용되는 패턴을 기반으로 만들었습니다.

 

 

1. 1부터 20까지의 숫자 중 제곱수가 50 이하인 숫자 리스트 만들기

squares = [x**2 for x in range(1, 21) if x**2 <= 50]
print(squares)  # 출력: [1, 4, 9, 16, 25, 36, 49]

 

여기서는 1부터 20까지의 숫자 중 제곱한 값이 50 이하인 숫자들만 포함하는 리스트를 생성합니다.

 

 

2. 문자열 리스트에서 길이가 5 이상인 단어만 필터링하기

words = ['apple', 'bat', 'banana', 'cherry', 'date']
long_words = [word for word in words if len(word) >= 5]
print(long_words)  # 출력: ['apple', 'banana', 'cherry']

 

이 예시에서는 문자열 리스트에서 길이가 5 이상인 단어들만 뽑아내는 리스트 컴프리헨션을 사용했습니다.

 

 

3. 주어진 리스트에서 각 숫자에 10을 더한 값으로 새로운 리스트 만들기

numbers = [1, 2, 3, 4, 5]
incremented_numbers = [x + 10 for x in numbers]
print(incremented_numbers)  # 출력: [11, 12, 13, 14, 15]

 

이 코드는 주어진 numbers 리스트의 각 숫자에 10을 더하여 새로운 리스트를 만드는 예시입니다.

반응형

'프로그래밍 > [ Python ]' 카테고리의 다른 글

[Python] 예외처리 try, except  (0) 2024.11.14
[Python] map  (0) 2024.11.13
[Python] Files (파일 관련)  (1) 2024.02.26
[python] pass, continue, break 활용법  (0) 2021.06.20
[연결 리스트] 두 수의 덧셈  (0) 2021.03.03
반응형

이번 포스팅에서는 파이썬으로 파일을 읽고, 쓰기 등 간단한 파일 관련된 코드에 대해 정리 해보겠습니다.

 

 

Reading

파일 읽기는 with open 구문으로 읽고자하는 파일을 지정한 후 read() 구문을 이용해서 할 수 있습니다.

with open('file.txt', 'r') as file:
    content = file.read()
    print(content)

 

 

Writing

파일 읽기와 마찬가지로 작성하고자 하는 파일 명을 with open 구문으로 저정한 후 write()를 활용하면 됩니다.

with open('file.txt', 'w') as file:
    file.write('Hello!')

 

 

Appending

이미 있는 파일에 붙여쓰기를 하기 위해서는 'a' 옵션으로 파일을 지정한 후 write()를 사용하게 되면 기존에 파일 내용에 원하는 내용을 추가할 수 있습니다.

with open('file.txt', 'a') as file:
    file.write('\nAppend')

 

 

Reading Lines

파일을 읽을 때 한 줄을 한번에 읽어오고 싶을때 readlines()를 사용하면 한 줄을 리스트 형태로 읽어올 수 있습니다.

with open('file.txt', 'r') as file:
    lines = file.readlines()
    print(lines)

 

 

Checking File Exists

파일을 읽거나 생성하기 전에 아래와 같이 파일의 존재유무를 체크할 수 있습니다.

import os
if os.path.exists('file.txt'):
    print('File exists.')
else:
    print('File does not exist.')

 

 

Multiple Files

with 구문을 활용하여 여러개의 파일을 동시에 활용할 수도 있습니다.

with open('original.txt', 'r') as first, open('copy.txt', 'w') as second:
    first_content = first.read()
    second.write(first_content)

 

 

Deleting

os의 remove를 활용하여 파일을 삭제할수도 있습니다.

import os
if os.path.exists('file.txt'):
    os.remove('file.txt')
    print('File deleted.')
else:
    print('File does not exist.')
반응형

'프로그래밍 > [ Python ]' 카테고리의 다른 글

[Python] map  (0) 2024.11.13
[Python] List Comprehension  (0) 2024.11.12
[python] pass, continue, break 활용법  (0) 2021.06.20
[연결 리스트] 두 수의 덧셈  (0) 2021.03.03
[연결 리스트] 역순 연결 리스트  (0) 2021.01.25
반응형

안녕하세요, 오늘은 정말 간단한 python에서 pass, continue, break 문법 각각의 역할과 활용법에 대해서 정리해보겠습니다.

 

쉽게 정리하자면,

  • pass : 아무 동작도 하지 않습니다. 반복문에서 아무런 영향을 끼치지 않습니다.
  • continue : 반복문에서 다음 loop로 건너뛰면서 loop는 지속됩니다.
  • break : 반복문을 멈추고 loop 밖으로 나갑니다.

 

말로 설명하는 것보다 쉽게 이해할 수 있도록 아래 예시로 정리하겠습니다.


 

pass는 왼쪽의 결과에서 볼 수 있듯이 코드에 아무런 영향을 끼치지 않습니다. 따라서 pass는 주로 조건문에서 별다른 행동이 필요하지 않을 때, 또는 class 생성시 초기에 별다른 값이 없을때 전체 코드 동작을 확인하기 위해 임시적으로 활용하기도 합니다.

 

 

 

 

 

 


 

 

continue는 해당 loop를 건너뛰고 다음 loop로 가는 역할을 수행합니다. 따라서 왼쪽 결과를 보면 2의 배수일 때 값을 print하지 않고 다음 loop로 넘어가는 것을 확인할 수 있습니다.

 

 

 

 

 

 


 

break는 반복문을 벗어나는 역할을 합니다. 왼쪽 결과를 보면 i 값이 2일때 조건에 맞아 break를 만나고 반복문을 벗어나 이후의 값이 출력되지 않는 것을 확인할 수 있습니다. 

 

 

 

 

 


 

반응형
반응형

* leetcode 2. Add Two Numbers

 

 

Q. 역순으로 저장된 연결 리스트의 숫자를 더하라

# 입력
(2 -> 4 -> 3) + (5 -> 6 -> 4)

# 출력
7 -> 0 -> 8

# 설명
342 + 465 = 807

 

풀이. 전가산기 구현

def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
    root = head = ListNode(0)
    
    carry = 0
    while l1 or l2 or carry:
        sum = 0
        
        # 두 입력값의 합 계산
        if l1:
            sum += l1.val
            l1 = l1.next
        if l2:
            sum += l2.val
            l2 = l2.next
        
        # 몫(올림)과 나머지(값) 계산
        carry, val = divmod(sum + carry, 10)
        head.next = ListNode(val)
        head = head.next
    
    return root.next
반응형
반응형

* leetcode 206. Reverse Linked List

 

Q. 연결 리스트를 뒤집어라.

# 입력
1->2->3->4->5->Null

# 출력
5->4->3->2->1->Null

풀이 1. 반복 구조로 뒤집기

def reverseList(head: ListNode) -> ListNode:
    node, prev = head, None
    
    # node.next를 이전 prev 리스트로 계속 연결하면 뒤집어진 연결 리스트를 얻을 수 있다.
    while node:
        next, node.next = node.next, prev
        prev, node = node, next
        
    return prev
    
###
초기화
node = 1->2->3->4->5->None
prev = None

while [1]
next = 2(->3->4->5->None)
node = 1 -> None
prev = 1 -> None
node = 2(->3->4->5->None)

while [2]
next = 3(->4->5->None)
node = 2->1->None
prev = 2->1->None
node = 3(->4->5->None)

while [3]
next = 4(->5->None)
node = 3->2->1->None
prev = 3->2->1->None
node = 4(->5->None)

while [4]
next = 5(->None)
node = 4->3->2->1->None
prev = 4->3->2->1->None
node = 5(->None)

while [5]
next = None
node = 5->4->3->2->1->None
prev = 5->4->3->2->1->None
node = None
###
반응형

+ Recent posts