最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【經(jīng)驗分享】Python技巧之推導(dǎo)式

2022-07-29 17:07 作者:騰訊藍鯨智云  | 我要投稿

簡介

列表推導(dǎo)式(List Comprehensions)也是來自函數(shù)式編程語言,可以優(yōu)雅的對一個序列進行數(shù)據(jù)篩選和處理得到一個結(jié)果列表。

比如,把一個列表中所有大于 0 的數(shù)平方后生產(chǎn)一個新的列表。


num = [-2, 3, 5, -4, 10, 7]


按常規(guī)做法,我們會


num = [-2, 3, 5, -4, 10, 7]

result = []

for x in num:

if x > 0:

result.append(x**2)

print result


然后,用列表推導(dǎo)式的話,只需要


print [x**2 for x in num if x > 0]




組成

怎么解讀這個式子呢?


把這個式子分成三個部分:輸出處理、for循環(huán)、if判斷。其中if判斷部分是可選的。

if 判斷部分是用來篩選。

輸出處理部分比較靈活,隨便自己想怎么處理。

比如有個列表A = [‘1’, ‘2’, ‘3’],我們可以[int(x) for x in A],把列表所有元素轉(zhuǎn)換成int類型。

上面是最基本的形式了。還有一些稍微復(fù)雜的形式,怎么解讀呢?

方法

方法是,除開“輸出處理”部分,其它都是按從左到右順序來的。

1)多個for循環(huán)


[(x, y) for x in range(3) for y in range(5)]


在這里,處理部分是(x, y),其它按從左到右。等價于


for x in range(3):

for y in range(5):

#處理部分


2)嵌套列表推導(dǎo)式


[[0 for y in range(3)] for x in range(5)]


在這里,處理部分是[0 for y in range(3)],其它按從左到右。等價于


for x in range(5):

#處理部分


3)多個if判斷


[(x, y) for x in range(3) if x>1 for y in range(5) if y>2]


在這里,處理部分是(x, y),其它按從左到右。等價于


for x in range(3):

if x>1:

for y in range(5):

if y>2:

#處理部分




拓展

1)其他推導(dǎo)式

除了列表推導(dǎo)式。還有生成器推導(dǎo)式、集合推導(dǎo)式(python2.7及以上)、字典推導(dǎo)式(python2.7及以上)。


[x for x in range(3)] #-> 列表推導(dǎo)式

(x for x in range(3)) #-> 生成器推導(dǎo)式

{x for x in range(3)} #-> 集合推導(dǎo)式

{x:None for x in range(3)} #-> 字典推導(dǎo)式


比如


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

>>> d2 = {v:k for k,v in d.items()}#反向映射

>>> d2

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

>>> d3 = {k:v.upper() for k,v in d2.items()}#把所有值都大寫

>>> d3

{1: 'A', 2: 'B', 3: 'C'}


2)Python3 base64編碼與解碼

在藍鯨項目中,部分接口的報文是通過base64加密傳輸?shù)模栽谶M行接口自動化時,需要對所傳的參數(shù)進行base64編碼,對拿到的響應(yīng)報文進行解碼;

例如:作業(yè)平臺的fast_execute_script(快速執(zhí)行腳本)的script_content

python3.x 中字符都為unicode編碼,而b64encode函數(shù)的參數(shù)為byte類型,所以必須先轉(zhuǎn)碼。


import base64

# encode 編碼

# decode 解碼

s ='adsvsdega15s1dasda'

encodestr = base64.b64encode(s.encode('utf-8'))

print(encodestr)

# b'YWRzdnNkZWdhMTVzMWRhc2Rh'

print(str(encodestr, 'utf-8'))

# YWRzdnNkZWdhMTVzMWRhc2Rh


decodestr = base64.b64decode(encodestr)

print(decodestr)

# b'adsvsdega15s1dasda'

print(str(decodestr, 'utf-8'))

# adsvsdega15s1dasda


藍鯨智云

本文由騰訊藍鯨智云編輯發(fā)布,騰訊藍鯨智云(簡稱藍鯨)軟件體系是一套基于PaaS的技術(shù)解決方案,致力于打造行業(yè)領(lǐng)先的一站式自動化運維平臺。目前已經(jīng)推出社區(qū)版、企業(yè)版,歡迎體驗。

- 官網(wǎng):https://bk.tencent.com/

- 下載鏈接:https://bk.tencent.com/download/

- 社區(qū):https://bk.tencent.com/s-mart/community/question


【經(jīng)驗分享】Python技巧之推導(dǎo)式的評論 (共 條)

分享到微博請遵守國家法律
日土县| 义马市| 沂南县| 井冈山市| 广南县| 南宫市| 永善县| 同心县| 门头沟区| 黎城县| 太康县| 江川县| 三穗县| 崇州市| 云梦县| 涡阳县| 集贤县| 鱼台县| 阳山县| 德令哈市| 天祝| 凯里市| 侯马市| 平阳县| 图们市| 从化市| 广宁县| 延庆县| 海安县| 疏勒县| 信宜市| 双峰县| 塔城市| 神农架林区| 绥阳县| 综艺| 宣武区| 琼中| 广昌县| 韩城市| 盖州市|