'Programming/Python'에 해당되는 글 79건

  1. 2013.02.13 특정 문자열 없애기
  2. 2013.02.13 리스트 내장
  3. 2013.02.12 Python의 리스트 자료형으로 Stack, Queue 쓰기
  4. 2013.02.12 리스트
  5. 2013.02.12 문장에서 각 단어의 횟수 세기
  6. 2013.02.12 문자열 분리
  7. 2013.02.09 문자열 붙이기
  8. 2013.02.08 사전을 이용한 포매팅

열혈강의 파이썬 문제중...

텍스트에서 모든 태그를 제외한 정보를 출력하라. 태그란 < > 로 표현된 문자열을 의미한다.

이 문제가 있었는데... 해답이 없다. 인터넷을 돌아다니며 알아본 결과, 이것은 정규식을 가지고 해결하도록 유도하는 문제였다.. 아마.. 근데.. 정규식으로

이 문제의 대한 답인 정규식으로 url같은 긴 텍스트를 하니 잘 되지 않았다. 아마도 정규식에서 뭔가 빠진듯..


정규식을 안쓰고 했던 것.. 이것들은 안빠지고 잘 됨!

이 알고리즘보다는... 밑에 것이 낫다!! 이것은 반복문이 2개나 있기때문이다.


반복문 하나와 제어문으로 구성되어있다.



※ 정규식으로... 해 보았는데... 길고 복잡한 텍스트에서는 작동이 잘 안되었다. 정규식에 뭔가 빠진듯 하다.

import re

re.sub('<(.*?)>', '', ss)

이렇게 하였는데 url을 가져와서 해보니 잘 되질 않는다. 몇몇개가 빠진다. 



'Programming > Python' 카테고리의 다른 글

파이썬에서 배열 표현  (1) 2013.02.13
명령행 옵션 처리  (0) 2013.02.13
리스트 내장  (0) 2013.02.13
Python의 리스트 자료형으로 Stack, Queue 쓰기  (0) 2013.02.12
리스트  (0) 2013.02.12
Posted by scii
:

리스트 내장

Programming/Python 2013. 2. 13. 00:33 |

리스트 내장(List Comprehension) 을 이용하여 0부터 9까지의 제곱의 리스트 만들기

L = [k * k for in k range(10)]

파이썬은 리스트를 대단히 유용하게 활용하는데 리스트 내장은 리스트를 쉽게 만드는 데 유용하다.

이것은 다음과 같이 표현된 것이다.

L = []

for k in range(10):

L.append(K * k)


리스트 내장은 함수적 프로그래밍 언어 Haskell에서 따온 것이다.

[ expression for expr in sequence1

for expr in sequence2 ...

for expr in sequenceN

if condition ]

for ... in 절은 시퀀스를 반복한다. for 문으로 취해지는 각각의 값들은 expression에서 사용된다. 

마지막 if 절은 선택적이다. 존재한다면, expression은 condition이 참일 때만 값이 계산되고 결과에 추가된다.


리스트 내포는 다음의 파이썬 코드와 동등하다.

for expr1 in sequence1:

for expr2 in sequence2:

...

for exprN in sequenceN:

if (condition):

# 식의 값을 결과 리스트에 추가




두 시퀀스 자료형의 모든 자료의 조합 만들기


※ 리스트 내장 효과의 발생자

메모리를 점유하는 리스트를 생성하지 않으면서 리스트 내장 효과를 내는 것이 가능하다.

예를 들면 다음과 같은 코드가 가능하다

이 코드가 리스트 내장과 다른 점은 (x*x for x in range(10))가 발생자를 만든다는 점이다.

이 반복자는 새로운 리스트를 생성하지 않으면서 합 계산에 사용될 수 있다.

리스트 내장보다 효과적인 이유는 중간의 리스트를 생성해 내지 않는 데 있다.


즉, 리스트 내장의 경우 다음과 같이 코딩한다.

sum([x*x for x in range(10)])

생성된 리스트에 대한 sum을 계산한다.


'Programming > Python' 카테고리의 다른 글

명령행 옵션 처리  (0) 2013.02.13
특정 문자열 없애기  (0) 2013.02.13
Python의 리스트 자료형으로 Stack, Queue 쓰기  (0) 2013.02.12
리스트  (0) 2013.02.12
문장에서 각 단어의 횟수 세기  (0) 2013.02.12
Posted by scii
:

리스트를 스택으로 쓰기

스택이란 나중에 넣은 데이터를 먼저 꺼내도록 되어 있는 메모리 구조를 말한다. 

넣는 연산을 'push', 꺼내는 연산을 'pop' 이라고 한다.


리스트는 그 자체를 스택으로 쓸 수 있게 설계되었다. 스택의 push는 append 메쏘드를, pop은 pop 메쏘드를 사용한다.





리스트를 큐로 쓰기

큐란 먼저 넣은 데이터를 먼저 꺼내도록 되어 있는 메모리 구조를 말한다.

데이터를 넣을 때는 append를, 꺼낼 때는 pop(0)을 이용한다.




'Programming > Python' 카테고리의 다른 글

특정 문자열 없애기  (0) 2013.02.13
리스트 내장  (0) 2013.02.13
리스트  (0) 2013.02.12
문장에서 각 단어의 횟수 세기  (0) 2013.02.12
문자열 분리  (0) 2013.02.12
Posted by scii
:

리스트

Programming/Python 2013. 2. 12. 21:46 |

리스트는 임의의 객체를 마음껏 저장할 수 있으며 순서를 가지는 마술상자와 같다. 크기도 자유롭게 조정이 가능하고 다양한 연산을 지원한다.

파이썬에서 가장 많이 활용되는 자료형이 리스트이다.


리스트는 다른 객체를 직접 저장하지 않고, 객체들의 레퍼런스만을 저장한다.


리스트의 Method

리스트 객체는 내장된 함수로 유용한 메쏘드를 여러 개 가지고 있다.

append                자료를 리스트 끝에 추가(스택의 push)

insert                   자료를 지정된 위치에 삽입

index                   요소 검색(Search)

count                   요소 개수 알아내기

sort                     리스트 정렬

reverse               자료 순서 바꾸기

remove               지정 자료 값 한 개 삭제

pop                    리스트의 지정된 값 하나를 읽어 내고 삭제(스택의 pop)

extend               리스트를 추가



※ 파이썬의 리스트를 보니까 자료구조중의 연결리스트가 떠오른다. 위에 메쏘드들은 연결리스트의 ADT와 똑같다. 조금 추가된 것 뿐.

자료구조를 공부하고 파이썬을 하니까 더 깊이 있게.. 연관성 있게 공부가 된다. 좋다!



'Programming > Python' 카테고리의 다른 글

리스트 내장  (0) 2013.02.13
Python의 리스트 자료형으로 Stack, Queue 쓰기  (0) 2013.02.12
문장에서 각 단어의 횟수 세기  (0) 2013.02.12
문자열 분리  (0) 2013.02.12
문자열 붙이기  (0) 2013.02.09
Posted by scii
:




'Programming > Python' 카테고리의 다른 글

Python의 리스트 자료형으로 Stack, Queue 쓰기  (0) 2013.02.12
리스트  (0) 2013.02.12
문자열 분리  (0) 2013.02.12
문자열 붙이기  (0) 2013.02.09
사전을 이용한 포매팅  (0) 2013.02.08
Posted by scii
:

문자열 분리

Programming/Python 2013. 2. 12. 02:06 |

디렉토리 경로면 분리

s = '/usr/local/bin/python'


디렉토리 경로명과 파일명을 분리



각 사용자의 실제 이름만 출력


'Programming > Python' 카테고리의 다른 글

리스트  (0) 2013.02.12
문장에서 각 단어의 횟수 세기  (0) 2013.02.12
문자열 붙이기  (0) 2013.02.09
사전을 이용한 포매팅  (0) 2013.02.08
str 과 repr  (0) 2013.02.08
Posted by scii
:


첫 번째 방법 보다 두 번째 방법이 훨씬 빠르다.


그 이유는 첫 번째 방법은 문자열을 실제로 10만번 붙이기 위하여 메모리 할당을 10만번 하고 10만번 해제한다. 또한 그 크기도 점차 늘어서 나중에는 400k 가까운 메모리를 할당하고 해제를 반복한다. 


반면에 두 번째 방법은 필요한 만큼의 문자열을 메모리에 해제함 없이 저장한 후 나중에 한번만 붙이므로 연산 속도가 상당히 빠르다.


'Programming > Python' 카테고리의 다른 글

문장에서 각 단어의 횟수 세기  (0) 2013.02.12
문자열 분리  (0) 2013.02.12
사전을 이용한 포매팅  (0) 2013.02.08
str 과 repr  (0) 2013.02.08
임의의 정수를 비트단위로  (0) 2013.02.01
Posted by scii
:

포매팅 방법 중에 사전을 이용한 포매팅 방법이 있다. 포맷 문자열이 사전의 키 이름으로 표현되면, 사전에 있는 값으로 그 부분이 대치된다.




모든 변수는 사전 형식으로 저장된다. 지역 영역에서 치환된 변수 사전(네임 스페이스라고도 한다)을 얻으려면 vars() 또는 locals() 를 이용한다.



'Programming > Python' 카테고리의 다른 글

문자열 분리  (0) 2013.02.12
문자열 붙이기  (0) 2013.02.09
str 과 repr  (0) 2013.02.08
임의의 정수를 비트단위로  (0) 2013.02.01
논리 연산자  (0) 2012.11.26
Posted by scii
: