예, 제대로 읽으셨습니다. "..."입니다.
Python에서 ...는 Ellipsis라는 객체를 나타냅니다. 공식 설명에 따르면 일반적으로 빈 함수의 자리 표시자로 사용하거나 Numpy에서 슬라이싱 작업에 사용할 수 있는 특수 값입니다.
예:
def my_awesome_function(): ...
는
def my_awesome_function(): Ellipsis
와 동일합니다. 물론 패스나 문자열을 자리 표시자로 사용할 수도 있습니다.
def my_awesome_function(): pass
def my_awesome_function(): "An empty, but also awesome function"
최종 효과는 동일합니다.
Numpy에서 객체가 어떻게 작동하는지 이야기해 보겠습니다. 3x3x3 행렬 배열을 만든 다음 가장 안쪽 행렬의 두 번째 열을 가져옵니다.
>>> import numpy as np >>> array = np.arange(27).reshape(3, 3, 3) >>> array array([[[ 0, 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]]])
가장 안쪽 행렬 열의 두 번째 열을 얻으려면 전통적인 방법을 사용하세요. 다음과 같이 보일 수 있습니다:
>>> array[:, :, 1] array([[ 1, 4, 7], [10, 13, 16], [19, 22, 25]])
... 객체를 사용하는 경우 다음과 같이 보일 것입니다:
>>> array[..., 1] array([[ 1, 4, 7], [10, 13, 16], [19, 22, 25]])
그러나 참고하세요... 객체는 Python 내장 배열이 아닌 Numpy에서만 사용할 수 있습니다.
반복 개체 압축 풀기는 매우 편리한 기능입니다:
>>> a, *b, c = range(1, 11) >>> a 1 >>> c 10 >>> b [2, 3, 4, 5, 6, 7, 8, 9]
또는:
>>> a, b, c = range(3) >>> a 0 >>> b 1 >>> c 2
마찬가지로 다음과 같은 코드를 작성하는 대신:
>>> lst = [1] >>> a = lst[0] >>> a 1 >>> (a, ) = lst >>> a 1
같은 방식으로 업데이트하는 것이 좋습니다. 반복 객체의 압축을 풀면서 우아한 할당 작업:
>>> lst = [1] >>> [a] = lst >>> a 1
좀 멍청해 보이지만 내 개인적인 의견으로는 이전 작성 방식보다 더 우아합니다.
다음과 같이 배열을 확장하는 여러 가지 이상한 방법이 있습니다.
>>> l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> flattened = [elem for sublist in l for elem in sublist] >>> flattened [1, 2, 3, 4, 5, 6, 7, 8, 9]
리듀스와 람다에 대해 어느 정도 이해하고 있다면 좀 더 우아한 방법을 사용하는 것이 좋습니다:
>>> from functools import reduce >>> reduce(lambda x,y: x+y, l) [1, 2, 3, 4, 5, 6, 7, 8, 9]
combine 감소 및 람다, l 배열의 각 하위 배열에 대해 접합 작업을 수행할 수 있습니다.
물론, 더 마법 같은 방법도 있습니다:
>>> sum(l, []) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> # 其实相当于 [] + [1, 2, 3] + [4, 5, 6] + [7, 8, 9]
예, 2차원 배열에 합계 연산을 수행하면 2차원 배열의 각 요소를 "덧셈"을 통해 함께 연결할 수 있습니다.
마찬가지로 3차원 배열에 합 연산을 하면 2차원 배열로 변환이 가능합니다. 이때 2차원 배열에 합 연산을 하면 가능합니다. 1차원 배열로 확장됩니다.
이 기술은 훌륭하지만 가독성이 너무 좋지 않기 때문에 권장하지 않습니다.
Python 인터프리터, IPython 또는 Django 콘솔에서 표현식을 실행할 때마다 Python은 출력 값을 _ 변수에 바인딩합니다.
>>> nums = [1, 3, 7] >>> sum(nums) 11 >>> _ 11 >>>
변수이므로 다음에서 재정의할 수 있습니다.
>>> 9 + _ 20 >>> a = _ >>> a 20
많은 사람들은 else가 여러 곳에서 사용될 수 있다는 사실을 모릅니다. in 루프 예외 처리에 사용됩니다.
특정 논리가 루프에서 처리되는지 확인해야 하는 경우 일반적으로 다음을 수행합니다.
found = False a = 0 while a < 10: if a == 12: found = True a += 1 if not found: print("a was never found")
else가 도입되면 변수를 하나 덜 사용할 수 있습니다.
a = 0 while a < 10: if a == 12: break a += 1 else: print("a was never found")
우리는 다음을 사용할 수 있습니다. try.. Except ... 예외가 포착되지 않았을 때 else를 사용하여 논리를 작성합니다:
In [13]: try: ...: {}['lala'] ...: except KeyError: ...: print("Key is missing") ...: else: ...: print("Else here") ...: Key is missing
이런 식으로 프로그램에 예외가 없으면 else 분기를 사용합니다:
In [14]: try: ...: {'lala': 'bla'}['lala'] ...: except KeyError: ...: print("Key is missing") ...: else: ...: print("Else here") ...: Else here
위 내용은 파이썬의 숨겨진 트릭은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!