티스토리 뷰
728x90
Pythonic Code란 무엇을까요?
파이썬 스러운 코드를 말하는데
문자열의 값을 분리하여 리스트 형태로 변환 해주는 split( )
문자열 값을 분리하여 나중에 크롤링에도 사용한다고 한다.
>>> items = 'zero one two three'.split()
>>> items
['zero', 'one', 'two', 'three']
>>> example = 'python, java, c'
>>> example.split(",")
['python', ' java', ' c']
>>> a,b,c = example.split(",")
>>> print(a,b,c)
python java c
# 빈 칸 기준 문자열 분리
# ,를 기준으로 문자열 분리 # 분리된 각 값을 언패킹
리스트를 합쳐 하나의 문자열로 바꿔주는 join( )
>>> colors = ['red', 'blue' ,'green', 'yellow'] >>> result = ''.join(colors)
>>> result
'redbluegreenyellow'
>>> result = ' '.join(colors) >>> result
'red blue green yellow'
>>> result = ', '.join(colors) >>> result
'red, blue, green, yellow'
>>> result = '-'.join(colors)
>>> result
'red-blue-green-yellow'
리스트와 for문을 한줄에 사용가능한 리스트 커프리헨션(list comperhenshion)
기존 리스트형을 사용하여 간단하게 새로운 리스트르 만드는 방법이다.
내부적으로 잘 구성된 메모리 사용 방식으로, 기존 for문보다 시간면에서 효울적인 연산을 수행하기도 한다.
배열안에 for문을 써서 배열을 만들어준다.
>>> result = []
>>> for i in range(10):
result.append(i)
>>> result
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
기존에 이렇게 표현하던 코드를 리스트 커프리헨션으로 표현한다면?
>>> result = [i for i in range(10)]
>>> result
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
조건을 부여하는 필터링
>>> result = []
>>> for i in range(10):
if i % 2 == 0: result.append(i)
>>> result
[0, 2, 4, 6, 8]
기존에 if문을 써서 2의 배수인 값만 넣어줬다면?
>>> result = [i for i in range(10) if i % 2 == 0]
>>> result
[0, 2, 4, 6, 8]
이렇게 단 2줄로 표현이 가능하다.
여러 조건을 더 간단하게도 표현이 가능한데..
>>> result = [i if i % 2 == 0 else 10 for i in range(10)] >>> result
[0, 10, 2, 10, 4, 10, 6, 10, 8, 10]
if를 for문 앞에다가 사용해서 간단하게 표현이 가능하다.
중첩 반복문
for 문을 여러게 사용이 가능하다.
>>> word_1 = "Hello"
>>> word_2 = "World"
>>> result = [i + j for i in word_1 for j in word_2]
>>> result
['HW', 'Ho', 'Hr', 'Hl', 'Hd', 'eW', 'eo', 'er', 'el', 'ed', 'lW', 'lo', 'lr', 'll', 'ld', 'lW', 'lo', 'lr', 'll', 'ld', 'oW', 'oo', 'or', 'ol', 'od']
중첩 반복문에 if를 사용해서 조건을 다는 것 도 가능하다.
>>> result = [i + j for i in word_1 for j in word_2 if not(i==j)] >>> result
['HW', 'Ho', 'Hr', 'Hl', 'Hd', 'eW', 'eo', 'er', 'el', 'ed', 'lW', 'lo', 'lr', 'ld', 'lW', 'lo', 'lr', 'ld', 'oW', 'or', 'ol', 'od']
>>> word_1 = "Hello"
>>> word_2 = "World"
>>> result = [i + j for i in word_1 for j in word_2] # 일차원 리스트
>>> result
['HW', 'Ho', 'Hr', 'Hl', 'Hd', 'eW', 'eo', 'er', 'el', 'ed', 'lW', 'lo', 'lr', 'll', 'ld', 'lW', 'lo', 'lr', 'll', 'ld', 'oW', 'oo', 'or', 'ol', 'od']
이차원 리스트를 사용하면 아래와 같이 for문의 순서가 바뀌게 된다 주의하자!
>>> result = [[i + j for i in word_1] for j in word_2] # 이차원 리스트 >>> result
[['HW', 'eW', 'lW', 'lW', 'oW'], ['Ho', 'eo', 'lo', 'lo', 'oo'], ['Hr', 'er', 'lr', 'lr', 'or'], ['Hl', 'el', 'll', 'll', 'ol'], ['Hd', 'ed', 'ld', 'ld', 'od']]
리스트의 값과 인덱스를 함께 출력하는 enumarate()
enumarate는 아래와 같이 인덱스를 함께 출력해준다.
>>> for i,v in enumerate(['tic', 'tac', 'toe']):
print(i,v)
0 tic
1 tac
2 toe
아래와 같이 인덱스를 key로 단어를 value로 하여 묶어 딕셔너리 형태로 만들 수 있다.
>>> words = 'The quick brown fox jumps over the lazy dog'.split()
>>> {i:j for i,j in enumerate(words)}
{0: 'The', 1: 'quick', 2: 'brown', 3: 'fox', 4: 'jumps', 5: 'over', 6: 'the', 7: 'lazy', 8: 'dog'}
같은 인덱스 값끼리 묶어주는 zip()
zip은 배열 간의 같은 인덱스끼리 묶어준다. 아래와 같이 같은 위치에 있는 값끼리 계산 해서 보여 줄 수도 있다.
* 그리고 zip은 배열중에 가장 짧은 애 까지만 묶어주고 멈춘다, 나머지는 버린다.
>>> a, b, c = zip((1,2,3),(10,20,30),(100,200,300))
>>> print(a,b,c)
(1, 10, 100) (2, 20, 200) (3, 30, 300)
>>> [sum(x) for x in zip((1,2,3),(10,20,30),(100,200,300))] # 같은 위치 값 더하기 [111, 222, 333]
마지막으로 인덱스를 출력하는 enumerate() 와 인덱스 끼리 묶어주는 zip()를 함께 써보자
>>> alist = ['a1', 'a2', 'a3']
>>> blist = ['b1', 'b2', 'b3']
>>> for i,(a, b) in enumerate(zip(alist, blist)):
0 a1 b1
1 a2 b2
2 a3 b3
쉬운 것 같으면서도 어려운 파이썬!
다음부터는 객체지향 프로그래밍에(클래스) 대한 내용을 확인해 보겠습니다.
'프로그래밍' 카테고리의 다른 글
[Python#4] 파이썬 상속(inheritance), 다향성, 캡슐화, 정보은닉 (0) | 2021.11.11 |
---|---|
[python#3] 객체지향 프로그래밍 / def, class, _init_(), _str_() (0) | 2021.11.09 |
인터렉티브 UI/UX란? 비전공자 추천, 취업 (0) | 2021.11.08 |
[python#1] 파이썬 개요 / 파이썬 설치 / hello world 출력해보기 (0) | 2021.11.04 |
프레임워크와 라이브러리의 차이점 (0) | 2021.09.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 하이브리드앱만들기
- 모바일웹만들기
- Spring프로젝트
- 프레임워크 라이브러리 차이점
- 라이브러리란
- 등산앱개발
- 정규화
- 등산로API
- 추상클레스
- 리츠란
- 스프링개념
- 스프링부트
- 쉬운개념
- 스프링
- 앱만들기
- select사용법
- 프레임워크
- 프레임워크란
- static
- tkgiddl
- 등산어플
- map
- 모바일앱만들기
- SQLD
- SQL
- JAVA프로젝트
- 컬렉션프레임워크
- Java
- 등산웹개발
- SET연산자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함