puython基礎實戰(六)-List Comprehensions

List Comprehensions中文翻譯應該就是一種列表推導的意思,那最終的功能還是生成list,其實就是一種簡化代碼的方式。
比如我們要create a number list from 0 to 9.
最普通的創建方式:

# 創建一個空集合
num_list=[]
# for循環分別賦值
for i in range(0,10):
    num_list.append(i)
num_list

//輸出結果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

但是除了這種方式,我們還可以有多種方式。

# 方法2,將range放入到一個list中不包含10
num_list=list(range(0,10))
num_list

# 方法3,直接循環range爲list
num_list=[i for i in range(0,10)]
num_list
num_list=[i for i in range(10)]
num_list

# (0,10)代表從0開始到10,不包含10,默認差值爲1,(0,10,2),差值則爲2,出來的值也就是偶數
num_list=[i for i in range(0,10,2)]
num_list

create a odd number list from 0 to 9
odd num(奇數)

# 方式1:直接for循環,用取餘的方式獲取值信息
num_list=[]
for i in range(0,10):
    if i % 2==1:
        num_list.append(i)
num_list
# 方式2:(1,10,2),差值則爲2,出來的值也就是偶數
nun_list=[i for i in range(1,10,2)]
num_list
# 方式3:直接循環range爲list
num_list=list(range(1,10,2))
num_list

//輸出結果
[1, 3, 5, 7, 9]

better performance

其實最常見的就是對於string的累加操作,在java語法中,我們常用stringBuilder和stringBuffer兩個來進行此操作。在python中也是有好多種方法的,但是對於性能,要着重選擇最優方式。

container=['huohuo','love','huhu']
string_build=""
for data in container:
#     用相加的方式,是影響性能的,當值少的時候,可以考慮
    string_build += str(data)
print(string_build)

builder_list=[]
for data in container:
#     常用方式定義一個list.用join的方式接收
    builder_list.append(str(data))
"".join(builder_list)

# another way is to use a "list comprehension"
"".join([str(data) for data in container])

# or use the map function
"".join(map(str,container))

//輸出結果
'huohuolovehuhu'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章