python技巧分享(十)

這是一個系列文章,主要分享python的使用建議和技巧,每次分享3點,希望你能有所收穫。

1 通過索引刪除列表元素

my_list = range(0, 10)
print my_list
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del my_list[9]
print my_list
# [0, 1, 2, 3, 4, 5, 6, 7, 8]
del my_list[5:8]
print my_list
# [0, 1, 2, 3, 4, 8]

示例中,通過del語句,可以很方便刪除列表中的某個元素或者部分元素。這裏需要注意,指定的索引值不能大於列表最大長度-1,否則會拋出IndexError異常,另外,list對象的pop方法和remove方法也可以刪除元素。

2 清空列表元素

my_list = range(0, 10)
print my_list
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print id(my_list)
# 87838600
del my_list[:]
print my_list
# []
print id(my_list)
# 87838600

清空一個列表有很多方式可以實現,但是藉助del語句,可以不用生成新的列表對象。示例中可以看到,清空列表元素前和清空後,列表的id沒有改變,即沒有生成新的對象,可以繼續使用該列表。

3 列表解析(list comprehensions)

my_list = range(0, 10)
even_num_list = [e for e in my_list if not e % 2]
print even_num_list
# [0, 2, 4, 6, 8]
odd_num_list = [e for e in my_list if e % 2]
print odd_num_list
# [1, 3, 5, 7, 9]

# syntax: [ expression for target in iterable lc-clauses ]

列表解析很有用,一行代碼就可以完成很多功能。示例中,藉助列表解析,很方便就從列表中篩選出偶數和奇數,代碼少且運行更快。如果使用其他方式實現,難免代碼會多一些,並且性能也會差一些。

列表解析語法規則如下:

[ expression for target in iterable lc-clauses ]

lc-clauses表示以下語句(可以是0個或者多個):

for target in iterable if expression

列表解析詳見:https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions

我的博客即將搬運同步至騰訊雲+社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=vfw3ljg3d9co

發佈了63 篇原創文章 · 獲贊 11 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章