tft每日頭條

 > 科技

 > python代碼講解

python代碼講解

科技 更新时间:2024-08-12 06:12:29

Python是世界上最流行的編程語言(TIOBE Index for April 2022),它易于上手且多才多藝,除了用于神經網絡的構建外, 還能用來創建Web應用、桌面應用、遊戲和運維腳本等多種多樣的程序。

Python語言語法簡潔,易于上手, 但當你深入研究時, 會發現Python有很多高級用法,這些高級用法可以大幅度提高代碼的可讀性和運行效率。

1.索引和切片

Python列表的索引和切片是非常強大的功能, 它們可以讓你在Python中獲取列表中的任意元素。除了支持常見的正索引外, Python還支持負索引和切片。

正索引

a_list = [100, 200, 300, 400, 500, 600] print(a_list[0]) # 輸出 100. print(a_list[1]) # 輸出 200. print(a_list[2]) # 輸出 300.

負索引

a_list = [100, 200, 300, 400, 500, 600] print(a_list[-1]) # 輸出 600. print(a_list[-3]) # 輸出 400.

切片

python代碼講解(掌握這些Python的高級用法)1

以下是列表切片的一些示例:

a_list = [1, 2, 5, 10, 20, 30] b_list = a_list[1:3] # 生成 [2, 5] c_list = a_list[4:] # 生成 [20, 30] d_list = a_list[-4:-1] # 生成 [5, 10, 20] e_list = a_list[-1:] # 生成 [30]

2.字符串對齊

字符串格式化在命令行工具開發中非常重要, str類包含基礎的,用于文本對齊的方法:左對齊,右對齊或居中對齊。

str.ljust(width [, fillchar]) # 左對齊 str.rjust(width [, fillchar]) # 右對齊 str.center(width [, fillchar]) # 中間對齊 digit_str.zfill(width) # 用“0”填充

下面是一些例子:

new_str = 'Help!'.center(10, '#') print(new_str)

該例的輸出為:

##Help!###


new_str = '750'.rjust(6, '0') print(new_str)

此例的輸出為:

000750

3.列表推導式&字典推導式

Python 2.0版本引入的最重要的功能之一就是列表推導式。它提供了一種從列表中生成一系列值的緊湊語法。它也可以應用于字典,集合(set)和其他類型的集合。

假設你要創建一個包含a_list中每個元素的平方的新列表,一種可能的實現方式如下:

b_list = [ ] for i in a_list: b_list.append(i * i)

如果a_list包含元素[1,2,3],則這些語句的結果是創建一個包含[1,4,9]的新列表,并将此列表分配給變量b_list。在這種情況下,相應的列表推導式如下所示:

b_list = [i * i for i in a_list]

假設想講一個元組列表轉換為字典,元組列表如下:

vals_list = [ ('pi', 3.14), ('phi', 1.618) ]

字典可以用下面的代碼生成:

my_dict = { i[0]: i[1] for i in vals_list }

注意在鍵值表達式(i[0]:i[1])中冒号(:)的使用。

4.可變長參數列表

Python最通用的功能之一就是能夠訪問可變長度參數的列表。借助此功能,你的函數可以處理任意數量的參數,就像内置的print函數一樣。可變長參數的特性也可以擴展到命名參數。

def func_name([ordinary_args,] *args): statements

這裡的中括号表示*args前面可以有任意數量的普通參數,在此表示為ordinary_args。此類參數是可選的。下面是示例代碼:

def my_var_func(*args): print('The number of args is', len(args)) for item in args: print(items)

此函數my_var_func可接受任意長度的參數列表。

>>> my_var_func(10, 20, 30, 40) The number of args is 4 10 20 30 40

可變長參數列表還支持關鍵字參數,如下所示:

def pr_named_vals(**kwargs): for k in kwargs: print(k, ':', kwargs[k])

上面的函數遍曆了kwargs表示的字典參數,打印出傳入參數的鍵(對應于參數名稱)和對應的值。

For example: >>> pr_named_vals(a=10, b=20, c=30) a : 10 b : 20 c : 30

args 和 kwargs可以組合使用,下面是一個例子。

def pr_vals_2(*args, **kwargs): for i in args: print(i) for k in kwargs: print(k, ':', kwargs[k]) pr_vals_2(1, 2, 3, -4, a=100, b=200)

運行時,此程序将打印以下内容:

1 2 3 -4 a : 100 b : 200

5.使用numpy進行線性代數運算

線性代數運算在深度學習中非常重要,numpy庫為Python提供了高效的線性代數運算模塊。

numpy的線性代數模塊非常完備,以計算點積為例進行介紹。

使用numpy時,可以使用點積函數dot計算點積。

numpy.dot(A, B, out=None)

A和B是要進行點積運算的兩個數組;out參數(如果已指定)是用于存儲結果的正确形狀的數組,“正确形狀”取決于A和B的形狀。

兩個一維數組的點積很簡單。數組的長度必須相同。點積計算是将A中的每個元素與其B中的對應元素相乘,然後對這些乘積求和,得出一個标量值。

D. P. = A[0]*B[0] A[1]*B[1] ... A[N-1] * B[N-1]例子:

import numpy as np A = np.ones(5) B = np.arange(5) print(A, B) [1. 1. 1. 1. 1.] [0 1 2 3 4] np.dot(A, A) 5.0 np.dot(A, B) 10.0 np.dot(B, B) 30

二維矩陣之間的點積比較複雜。與數組之間的普通乘法一樣,兩個數組的形狀必須兼容,但這隻需要在其中一個維度上相等即可。下面是描述點積應用到二維數組通用模式:

(A, B) * (B, C) => (A, C)

思考下面的2×3數組,再結合一個3×2數組,其點積是2×2數組。

A = np.arange(6).reshape(2,3) B = np.arange(6).reshape(3,2) C = np.dot(A, B) print(A, B, sep='\n\n') print('\nDot product:\n', C) [[0 1 2] [3 4 5]] [[0 1] [2 3] [4 5]] Dot product: [[10 13] [28 40]]

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved