個人的python小工具(1:list降維)
不清楚這麼常用的功能除了flatten以外竟然沒人或者團隊專門開發!?
這篇文章放了兩種方法,一種是根據自己需要調整降維程度,另一種是直降一維,大家可根據自己需求進行選擇
直接上代碼:
降維n次:
def lowerNDem(myList,dropDem=2): lower the dimention of a list [dropDem] times tempList=[]#臨時列表 for i in range(dropDem): tempList=[] for myListItem in myList:#探索第二高維 if type(myListItem)==list:#若第二高維不是0維 for myListItemItem in myListItem:#分解第二高維 tempList.append(myListItemItem)#填充進臨時列表 else:#若第二高維是0維 tempList.append(myListItem)#填充進臨時列表 myList=tempList#原列表替換 return myList
使用舉例:
if __name__ == __main__: a=[[1,2,[[[3]]]],[4,5],[6]] a=lowerNDem(a,2) print(a)>>>[1, 2, [[3]], 4, 5, 6]
降維至1維(本質上是上面的降維n次編程降維無限多次):
def isOneD(myList): for myListItem in myList: if type(myListItem)==list: return False#只要第二高維不是0維則說明降維不徹底 return True def lowerDemToOne(myList): lower the dimention of a list to 1-D tempList=[] while isOneD(myList)==False:#判斷降維是否徹底 tempList=[] for myListItem in myList:#探索第二高維 if type(myListItem)==list:#若第二高維不是0維 for myListItemItem in myListItem:#分解第二高維 tempList.append(myListItemItem)#填充進臨時列表 else:#若第二高維是0維 tempList.append(myListItem)#填充進臨時列表 myList=tempList#原列表替換 return myList
使用舉例:
if __name__ == __main__: a=[[1,2,[[[3]]]],[4,5],[6]] a=lowerDemToOne(a) print(a)>>>[1, 2, 3, 4, 5, 6]
推薦閱讀:
※python下使用selenium怎麼才能控制瀏覽器載入某個元素?
※怎麼能開始會寫自己的tensorflow代碼?
※如何讓停留在語法層面的 C++,變成實際工程中的 C++?
※Python基礎知識篇