# list comprehension 

# docs는 list of list of str

# 이를 list of str로 flatten 시킴


docs = [

    '이건 테스트 문장입니다'.split(),

    '두번째 줄입니다'.split(),

    '마지막 줄입니다'.split()

    ]

print(docs)

 [['이건', '테스트', '문장입니다'], ['두번째', '줄입니다'], ['마지막', '줄입니다']]



# flatten 시키기 1

flatten_docs = [word for doc in docs for word in doc]

print(flatten_docs)

['이건', '테스트', '문장입니다', '두번째', '줄입니다', '마지막', '줄입니다']

# for doc in docs 라는 list를 돌면서 그 안의 doc 이라는 list를 가져옴

# 그 다음의 for word in docs는 doc 이라는 list 안의 word 라는 str을 정의

# 이런 word 들을 하나의 list로 묶는다는 의미로 [word for... for...]이 적합



# flatten 시키기 2

flatten_docs_ = []

for doc in docs:

    for word in doc:

        flatten_docs_.append(word)

print(flatten_docs_)

['이건', '테스트', '문장입니다', '두번째', '줄입니다', '마지막', '줄입니다']



# set에도 적용 됨

flatten_docs_set = {word for doc in docs for word in doc}

print(flatten_docs_set)


term_vectors = {

    'doc1' : '이건 테스트 문장입니다'.split(),

    'doc2' : '두번째 줄입니다'.split(),

    'doc3' : '마지막 줄입니다.'.split()

    }

flatten_terms = {term for key, terms in term_vectors.items() for term in terms}

print(flatten_terms)

{'마지막', '줄입니다', '줄입니다.', '테스트', '이건', '두번째', '문장입니다'}


# dict에도 적용 됨

# dict.keys(): dict의 키

# dict.values(): 값

# dict.items(): (key, value) pair

# => iteration 할 수 있는 형태로 제공

d = {

    'a':1,

    'b':2,

    'c':3

    }


print('\nitems()')

for key, value in d.items():

    print(key, value)

items()

a 1

b 2

c 3


print('\nkeys()')

print([key for key in d.keys()])

keys()

['a', 'b', 'c']


print('\nvalues()')

print([value for value in d.values()])

values()

[1, 2, 3]


sum(d.values())



# enumerate

# 1. JAVA처럼 짠 것

I = ['a', 'b', 'c', 'd', 'e']

for i in range(len(I)):

    print('I[{}] = {}'.format(i, I[i]))

I[0] = a

I[1] = b

I[2] = c

I[3] = d

I[4] = e


# 2. enumerate 이용

for i, item in enumerate(I):

    print('I[{}] = {}'.format(i, item))

I[0] = a

I[1] = b

I[2] = c

I[3] = d

I[4] = e


# set, dict와 같이 iterable한 모든 경우에 이용 가능

S = ['a', 'b', 'c', 'd', 'e']

for i, item in enumerate(S):

    print('{}: {}'.format(i, item))

0: a

1: b

2: c

3: d

4: e

    



'파이썬' 카테고리의 다른 글

_yield_len_iter  (0) 2017.08.29
slice and sorting  (0) 2017.08.29
Pickle  (0) 2017.08.28
Dictionary  (0) 2017.08.28
마인크래프트로 배우는 파이썬 프로그래밍  (0) 2017.08.25

+ Recent posts