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 중국어 웹사이트의 기타 관련 기사를 참조하세요!