列表中 for 循環 如 [xxx for i in xxx if xxx]

列表中 for 循環 如 [xxx for i in xxx if xxx]

簡潔的表示對列表進行for循環操作

例如我在視頻抽幀時用到的一個列表操作

dirs = [i for i in lsdir if os.path.isdir(os.path.join(path[idir] , i))] #判斷是否爲目錄
files = [os.path.join(path[idir], i) for i in lsdir if os.path.isfile( os.path.join(path[idir] , i))]  #判斷是否爲文件

第一行就是相當於

for i in lsdir:
    if os.path.isdir(os.path.join(path[idir] , i)):
        # 如果爲True, 則把這個i返回列表,否則不返回

遍歷列表的每個元素並判斷是否爲一個目錄,是目錄則返回列表中;
第二行類似

for i in lsdir:
    if os.path.isfile( os.path.join(path[idir] , i)):
        # 如果爲True, 則把這個i進行os.path.join(path[idir], i)處理再返回,否則不返回

遍歷列表的每個元素並判斷是否爲一個文件,是文件則進行一個與路徑拼接操作再返回列表中;

原理:
[expression for iter_val in iterable]

[expression for iter_val in iterable if cond_expr]

列表解析高效地對列表操作並創建新列表。
如有不明白的地方可以私聊博主,謝謝大家!!!

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