Posts [부스트캠프 AI Tech / Day3] 파이썬 (Pythonic) String & List
Post
Cancel

[부스트캠프 AI Tech / Day3] 파이썬 (Pythonic) String & List

[DAY 3] (Pythonic) String & List


Pythonic code

  • 파이썬 스타일 코드(코딩 기법)
  • 파이썬 특유의 문법을 활용하여 효율적으로 코드를 표현함
  • 고급 코드를 작성 할 수록 더 많이 필요해짐
  • 타인의 코드에 대한 이해도
  • 효율(빠른 속도, 짧은 코드)

split() & join()

  • split 함수
    • string type의 값을 “기준값”으로 나눠서 List 형태로 변환
  • join 함수
    • String으로 구성된 list를 합쳐 하나의 string으로 반환
  • ex) split

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
        # split
        >>> items = 'zero one two three'.split() # 빈칸을 기준으로 문자열 나누기
        >>> print (items)
        # ['zero', 'one', 'two', 'three']
        >>> example = 'python,java,javascript' # ","을 기준으로 문자열 나누기
        >>> example.split(",")
        # ['python', ‘java', 'javascript']
        >>> a, b, c = example.split(",")
        # 리스트에 있는 각 값을 a,b,c 변수로 unpacking
        >>> example = teamlab.technology.io'
        >>> subdomain, domain, tld = example.split('.')
        # "."을 기준으로 문자열 나누기 → Unpacking
    
  • ex) join

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
        # join
        >>> colors = ['red', 'blue', 'green', 'yellow']
        >>> result = ''.join(colors)
        >>> result
        # 'redbluegreenyellow'
        >>> result = ' '.join(colors) # 연결 시 빈칸 1칸으로 연결
        >>> result
        # 'red blue green yellow'
        >>> result = ', '.join(colors) # 연결 시 ", "으로 연결
        >>> result
        # 'red, blue, green, yellow'
        >>> result = '-'.join(colors) # 연결 시 "-"으로 연결
        >>> result
        # 'red-blue-green-yellow'
    

List Comprehension

  • 기존 List 사용하여 간단히 다른 List를 만드는 기법
  • 포괄적인 List, 포함되는 리스트라는 의미로 사용됨
  • 파이썬에서 가장 많이 사용되는 기법 중 하나
  • 일반적으로 for + append 보다 속도가 빠름
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
    ##### general style
    >>> result = []
    >>> for i in range(10):
        result.append(i)
    
    >>> result
    # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    ##### list comprehension
    >>> result = [i for i in range(10)]
    >>> result
    # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> result = [i for i in range(10) if i % 2 == 0]
    >>> result
    # [0, 2, 4, 6, 8]

    ############################################################
    >>> word_1 = "Hello"
    >>> word_2 = "World"
    >>> result = [i+j for i in word_1 for j in word_2]
    # Nested For loop
    >>> 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']

    ############################################################
    >>> case_1 = ["A","B","C"]
    >>> case_2 = ["D","E","A"]
    >>> result = [i+j for i in case_1 for j in case_2]
    >>> result
    # ['AD', 'AE', 'AA', 'BD', 'BE', 'BA', 'CD', 'CE', 'CA']
    >>> result = [i+j for i in case_1 for j in case_2 if not(i==j)]
    # Filter: i랑 j과 같다면 List에 추가하지 않음
    # [i+j if not(i==j) else i for i in case_1 for j in case_2]
    >>> result
    # ['AD', 'AE', 'BD', 'BE', 'BA', 'CD', 'CE', 'CA']
    >>> result.sort()
    >>> result
    # ['AD', 'AE', 'BA', 'BD', 'BE', 'CA', 'CD', 'CE']

    ############################################################
    >>> words = 'The quick brown fox jumps over
    the lazy dog'.split()
    # 문장을 빈칸 기준으로 나눠 list로 변환
    >>> print (words)
    ['The', 'quick', 'brown', 'fox', 'jumps',
    'over', 'the', 'lazy', 'dog']
    >>>
    >>> stuff = [[w.upper(), w.lower(), len(w)]
    for w in words]
    # list의 각 elemente들을 대문자, 소문자, 길이로 변환하여 two dimensional list로 변환

    >>> for i in stuff:
        print (i)
    
    ['THE', 'the', 3]
    ['QUICK', 'quick', 5]
    ['BROWN', 'brown', 5]
    ['FOX', 'fox', 3]
    ['JUMPS', 'jumps', 5]
    ['OVER', 'over', 4]
    ['THE', 'the', 3]
    ['LAZY', 'lazy', 4]
    ['DOG', 'dog', 3]

    ############################################################
    # Two dimensional vs One dimensional
    >>> case_1 = ["A","B","C"]
    >>> case_2 = ["D","E","A"]
    ['AD', 'AE', 'AA', 'BD', 'BE', 'BA', 'CD', 'CE', 'CA']
    >>> result = [i+j for i in case_1 for j in case_2]
    >>> result
    ['AD', 'AE', 'AA', 'BD', 'BE', 'BA', 'CD', 'CE', 'CA']
    >>> result = [ [i+j for i in case_1] for j in case_2]
    >>> result
    [['AD', 'BD', 'CD'], ['AE', 'BE', 'CE'], ['AA', 'BA', 'CA']]
This post is licensed under CC BY 4.0 by the author.