列表中 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]
列表解析高效地對列表操作並創建新列表。
如有不明白的地方可以私聊博主,謝謝大家!!!