Python3 中實現flattten函式

2021-08-11 12:22:01 字數 1424 閱讀 7986

最近歲資料集進行處理的時候需要把多維資料轉換為一維的,但是python3中

已經不支援flatten函式了,所以自己寫了乙個把多維陣列轉換為一維陣列的函式。

@requires_authorization

# -*- coding:utf-8 -*-

defflatten

(input_list):

output_list =

while

true:

if input_list == :

break

for index, value in enumerate(input_list):

# index :索引序列 value:索引序列對應的值

# enumerate() 函式用於將乙個可遍歷的資料物件(如列表、元組或字串)組合為乙個索引序列,

# 同時列出資料和資料下標,一般用在 for 迴圈當中。

if type(value)== list:

input_list = value + input_list[index+1:]

break

# 這裡跳出for迴圈後,從while迴圈進入的時候index是更新後的input_list新開始算的。

else:

input_list.pop(index)

break

return output_list

t=[1,[5,7,8],[2,7,8],"hello",['you','are','the','only','one'],[[5,7,8],[2,7,8],[0,8,7]]]

print flatten(t)

# output [1, 5, 7, 8, 2, 7, 8, 'hello', 'you', 'are', 'the', 'only', 'one', 5, 7, 8, 2, 7, 8, 0, 8, 7]

#attention 1 在enumerate中,index和value的對應情況

# 0 1

# 1 [5, 7, 8]

# 2 [2, 7, 8]

# 3 hello

# 4 ['you', 'are', 'the', 'only', 'one']

# 5 [[5, 7, 8], [2, 7, 8], [0, 8, 7]]

# attention 2

# [[[5, 7, 8],

# [2, 7, 8],

# [0, 8, 7]]]

# 當input_list變為如上所示的列表時,

# input_list = value + input_list[index+1:] 中input_list[index+1:] 為空

這些都可以在pycharm中通過斷點除錯得到印證。今天的學習就到這裡啦

python3實現CryptoJS AES加密演算法

from crypto.cipher import aes from binascii import b2a hex,a2b hex import base64 class aescrypt def init self,key self.key key.encode utf8 self.mode a...

python3中異常處理 Python3異常處理

python的異常處理機制 使用 try.except 捕獲異常 try 業務實現 except error1,error2,as e 出現異常後的處理 異常類的繼承關係 baseexception systemexit keyboardinterrupt generatorexit excepti...

python3怎麼賦值 python3中賦值問題?

我閒著沒事乾來詳細回答一波。phthon的物件實際儲存在記憶體上,而變數名對應了乙個位址,位址指向了那一塊記憶體。在第一例中,python在記憶體中開出了一片用來儲存int值1,然後將它的位址賦值給a,接下來a把位址賦值給b。此時a,b指向同乙個int值物件。後來b 1的操作做的是先計算b 1,計算...