>  기사  >  백엔드 개발  >  Python의 효율적인 팁 4가지!

Python의 효율적인 팁 4가지!

WBOY
WBOY앞으로
2023-04-11 19:49:141132검색

Python의 효율적인 팁 4가지!

목록 뒤집기

Python에서는 일반적으로 목록을 뒤집는 두 가지 방법이 있습니다: 슬라이싱 또는​​reverse()​​ 함수 옮기다. 두 가지 방법 모두 목록을 뒤집을 수 있지만 내장 함수​reverse()​​는 원래 목록을 변경합니다. Method를 슬라이싱하는 동안 새 목록이 생성됩니다. ​reverse()​​ 函数调用。这两种方法都可以反转列表,但需要注意的是内置函数 ​​reverse()​​ 会更改原始列表,而切片方法会创建一个新列表。

但是他们的表现呢?哪种方式更有效?让我们看一下下面的例子:

使用切片:

$ python -m timeit -n 1000000 -s 'import numpy as np' 'mylist=list(np.arange(0, 200))' 'mylist[::-1]'
1000000 loops, best of 5: 15.6 usec per loop

使用 reverse():

$ python -m timeit -n 1000000 -s 'import numpy as np' 'mylist=list(np.arange(0, 200))' 'mylist.reverse()'
1000000 loops, best of 5: 10.7 usec per loop

这两种方法都可以反转列表,但需要注意的是内置函数 ​​reverse()​​ 会更改原始列表,而切片方法会创建一个新列表。

显然,内置函数 ​​reverse()​​ 比列表切片方法更快!

交换两个值

用一行代码交换两个变量值是一种更具有 Python 风格的方法。

与其他编程语言不同,Python 不需要使用临时变量来交换两个数字或值。举个简单的例子:

variable_1 = 100 
variable_2 = 500

要交换 ​​variable_1​​ 和 ​​variable_2​​ 的值,只需要一行代码。

variable_1, variable_2 = variable_2, variable_1

您也可以对字典使用相同的技巧:

md[key_2], md[key_1] = md[key_1], md[key_2]

该技巧可以避免多次迭代和复杂的数据转换,从而减少执行时间。

在函数内部循环

我们都喜欢创建自定义函数来执行我们自己的特定任务。然后使用 ​​for​​ 循环遍历这些函数,多次重复该任务。

但是,在 ​​for​​ 循环中使用函数需要更长的执行时间,因为每次迭代都会调用该函数。

相反,如果在函数内部实现了 ​​for​​ 循环,则该函数只会被调用一次。

为了更清楚地解释,让我们举个例子!

首先创建一个简单的字符串列表:

list_of_strings = ['apple','orange','banana','pineapple','grape']

创建两个函数,函数内部和外部都有 ​​for​​ 循环,从简单的开始。

def only_function(x):
    new_string = x.capitalize()
    out_putstring = x + " " + new_string
    print(output_string)

和一个带有循环的 ​​for​

그렇다면 그들의 퍼포먼스는 어떨까요? 어떤 방법이 더 효과적인가요? 다음 예를 살펴보겠습니다.

슬라이스 사용:

def for_in_function(listofstrings):
    for x in list_of_strings:
        new_string = x.capitalize()
        output_string = x + " " + new_string
        print(output_string)

reverse() 사용:

# Check if num an int type
type(num) == type(0) # Three function calls
type(num) is type(0) # Two function calls
isinstance(num,(int)) # One function call

Python의 효율적인 팁 4가지!두 방법 모두 목록을 되돌릴 수 있지만 다음이 필요합니다. 내장 함수​reverse()​​는 원래 목록을 변경하고, 슬라이싱 메서드는 새 목록을 만듭니다. Python의 효율적인 팁 4가지!

분명히 내장 함수​reverse()​​ 목록 분할 방법보다 빠릅니다. 🎜🎜두 값 교환🎜🎜두 변수 값을 한 줄의 코드로 교환하는 것이 더 Python적인 접근 방식입니다. 🎜🎜다른 프로그래밍 언어와 달리 Python은 두 숫자나 값을 교환하기 위해 임시 변수를 사용할 필요가 없습니다. 간단한 예: 🎜
# Each loop the len(a) will be called
while i < len(a):
    statement
# Only execute len(a) once
m = len(a)
while i < m:
    statement

🎜교환​​variable_1​​ 및 ​variable_2​​에는 한 줄의 코드만 필요합니다. 🎜rrreee🎜 사전에도 동일한 트릭을 사용할 수 있습니다. 🎜rrreee🎜 이 트릭은 여러 번의 반복과 복잡한 데이터 변환을 방지하여 실행 시간을 단축합니다. 🎜🎜함수 내부 반복🎜🎜우리 모두는 자신만의 특정 작업을 수행하기 위해 사용자 정의 함수를 만드는 것을 좋아합니다. 그런 다음 ​​for​​ 이러한 함수를 반복하여 작업을 여러 번 반복합니다. 🎜🎜단​​for​​ 루프 내에서 함수를 사용하면 각 반복에서 함수가 호출되기 때문에 실행하는 데 시간이 더 걸립니다. 🎜🎜반대로 ​for​​ 루프에서는 함수가 한 번만 호출됩니다. 🎜🎜더 명확하게 설명하기 위해 예를 들어보겠습니다! 🎜🎜간단한 문자열 목록을 만드는 것부터 시작하세요. 🎜rrreee🎜함수 내부와 외부에 하나씩 두 개의 함수를 만듭니다.​for​ 간단하게 시작하세요. 🎜rrreee🎜 및 ​for​​ 함수: 🎜rrreee🎜분명히 이 두 함수의 출력은 동일합니다. 🎜🎜그럼 어느게 더 빠른지 비교해볼까요? 🎜🎜🎜🎜🎜

如您所见,在函数内使用 ​​for​​ 循环会稍微快一些。

减少函数调用次数

判断对象的类型时,使用 ​​isinstance()​​ 最好,其次是对象类型标识 ​​id()​​,对象值 ​​type()​​ 最后。

# Check if num an int type
type(num) == type(0) # Three function calls
type(num) is type(0) # Two function calls
isinstance(num,(int)) # One function call

不要将重复操作的内容作为参数放在循环条件中,避免重复操作。

# Each loop the len(a) will be called
while i < len(a):
    statement
# Only execute len(a) once
m = len(a)
while i < m:
    statement

要在模块 X 中使用函数或对象 Y,请直接使用 ​​from X import Y​​ 而不是 ​​import X; then X.Y​​。这减少了使用 Y 时的一次查找(解释器不必先查找 X 模块,然后在 X 模块的字典中查找 Y)。

总而言之,你可以大量使用 Python 的内置函数。提高 Python 程序的速度,同时保持代码简洁易懂。

如果想进一步了解 Python 的内置函数,可以参考下表,或查看以下网站(https://docs.python.org/3/library/functions.html):

Python의 효율적인 팁 4가지!


위 내용은 Python의 효율적인 팁 4가지!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제