>  기사  >  백엔드 개발  >  Python 언어의 꼭 봐야 할 기능과 기술 30가지(1)

Python 언어의 꼭 봐야 할 기능과 기술 30가지(1)

高洛峰
高洛峰원래의
2017-03-17 16:48:221157검색

Python을 배우기 시작한 이후로 나는 자주 사용하는 "트릭" 목록을 유지하기로 결정했습니다. "멋지네요!"라고 생각하게 만드는 코드를 볼 때마다(예: StackOverflow, 오픈 소스 소프트웨어 등에서) 이해할 때까지 시도한 다음 목록에 추가합니다. . 이 게시물은 정리된 목록의 일부입니다. 숙련된 Python 프로그래머라면 이미 알고 있는 내용도 있지만 모르는 내용을 발견할 수도 있습니다. Python을 배우고 있거나 프로그래밍을 이제 막 배우기 시작한 C, C++ 또는 Java 프로그래머라면 나처럼 이들 중 많은 것이 매우 유용하다는 것을 알게 될 것입니다.

각각의 트릭이나 언어적 특징은 과도한 설명 없이 예시로만 확인할 수 있습니다. 예제를 명확하게 설명하려고 노력했지만 익숙함에 따라 일부 예제는 여전히 약간 복잡해 보일 수 있습니다. 따라서 예를 살펴본 후 확실하지 않은 경우 제목은 Google을 통해 자세한 내용을 얻을 수 있도록 충분한 정보를 제공할 수 있습니다.

목록은 난이도별로 정렬되어 있으며 일반적으로 사용되는 언어 기능과 기술이 앞에 있습니다.

1.1 분할

>>> a, b, c = 1, 2, 3

>>> >

(1, 2, 3)

>>> a, b, c = [1, 2, 3]

>>> b, c

(1, 2, 3)

>>> a, b, c = (2 * i + 1 for i in range(3))

>>> a, b, c

(1, 3, 5)

>>> a, (b, c), d = [1, (2, 3), 4]

>>>a

1

>>> 2

>>> c

3

>>d

4

1.2 분할

>>> a, b = 1, 2

>>>a, b = b, a

>> ; a, b

(2, 1)

1.3 확장 및 분할(Python 3에서 적용 가능)

>>> [1, 2, 3, 4, 5]

>>>a

1

>>b

[2, 3, 4]

>>> c

5

1.4 음수 지수

>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> a[-1]

10

>>> a[-3]

8

1.5 목록 분할(a[start:

end

])

>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> 🎜>

[2, 3, 4, 5, 6, 7]

1.6 음수 인덱스를 사용한 리스트 슬라이싱

>>> , 3, 4, 5, 6, 7, 8, 9, 10]

>>> >

1.7 단계 값이 있는 목록 슬라이스(a[start:end:step])

>>> a = [0, 1, 2, 3, 4, 5, 6, 7 , 8, 9, 10]

>>> a[::2]

[0, 2, 4, 6, 8, 10]

>>>a[::3]

[0, 3, 6, 9]

>>>

[2, 4, 6]

1.8 음수 단계 값 목록 분할

>>> a = [0, 1, 2, 3 , 4, 5, 6 , 7, 8, 9, 10]

>>> a[::-1]

[10, 9, 8, 7, 6 , 5, 4, 3 , 2, 1, 0]

>>> a[::-2]

[10, 8, 6, 4, 2, 0 ]

1.9 목록 조각 할당

>>> a = [1, 2, 3, 4, 5]

>>> 0, 0]

>>> 1:1] = [8, 9]

>>>a

[1, 8, 9, 2, 0, 0, 4, 5]

>>> a[1:-1] = []

>>> a

[1, 5]

1.10 슬라이스(슬라이스(시작, 끝, 단계))

>>> a = [0, 1, 2, 3, 4, 5]

>>> LASTTHREE = 슬라이스(-3, 없음)

>>> LASTTHREE

슬라이스(-3, 없음, 없음)

> ;>> [LASTTHREE]

[3, 4, 5]

1.11

zip

포장 및 개봉 목록 및 배수

>> [1, 2, 3]

>>> b = ['a', 'b', 'c']

> > a, b)

>>> z

[(1, 'a'), (2, 'b'), (3, 'c')] >>> zip(*z)

[(1, 2, 3), ('a', 'b', 'c')]

1.12   使사용zip합쳐상영적列表项

>>> a = [1, 2, 3, 4, 5, 6]  

>>> zip(*([iter(a)] * 2))  

[(1, 2), (3, 4), (5, 6)]  

 

>>>> group_adjacent = 람다 a, k: zip(*([iter(a)] * k))  

>>> group_adjacent(a, 3)  

[(1, 2, 3), (4, 5, 6)]  

>>> group_adjacent(a, 2)  

[(1, 2), (3, 4), (5, 6)]  

>>> group_adjacent(a, 1)  

[(1,), (2,), (3,), (4,), (5,), (6,)]  

 

>>> zip(a[::2], a[1::2])  

[(1, 2), (3, 4), (5, 6)]  

 

>>> zip(a[::3], a[1::3], a[2::3])  

[(1, 2, 3), (4, 5, 6)]  

 

>>> group_adjacent = 람다 a, k: zip(*(a[i::k] for i in range(k)))  

>>> group_adjacent(a, 3)  

[(1, 2, 3), (4, 5, 6)]  

>>> group_adjacent(a, 2)  

[(1, 2), (3, 4), (5, 6)]  

>>> group_adjacent(a, 1)  

[(1,), (2,), (3,), (4,), (5,), (6,)] 

1.13使用zip and iterators生成滑动窗口 (n -grams) 

>>> itertools import islice에서  

>>> def n_grams(a, n):  

...     z = (islice(a, i, None) for i in range(n))  

...     return zip(*z)  

...  

>>> a = [1, 2, 3, 4, 5, 6]  

>>> n_grams(a, 3)  

[(1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6)]  

>>>> n_grams(a, 2)  

[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]  

> ;>> n_grams(a, 4)  

[(1, 2, 3, 4), (2, 3, 4, 5), (3, 4, 5, 6)] 

1.14使用zip反转字典

>>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}  

>>> m.items()  

[('a', 1), ('c', 3), ('b', 2), ('d', 4)]  

>>> zip(m.values(), m.keys())  

[(1, 'a'), (3, 'c'), (2, 'b'), (4, 'd ')]  

>>> mi = dict(zip(m.values(), m.keys()))  

>>> mi  

{1: 'a', 2: 'b', 3: 'c', 4: 'd'} 


위 내용은 Python 언어의 꼭 봐야 할 기능과 기술 30가지(1)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.