1. 程式人生 > >python中多層巢狀列表的拆分

python中多層巢狀列表的拆分

場景:有一個多層巢狀的列表如:[[23],[3,3],[22,22],1,123,[[123,a],2]] 拆分成:

def splitlist(list):
    '''
        現有一個列表,裡面元素包括 數字,字母,列表,字典等元素,現在要將字典去掉,並將列表
        分解成字母,或數字元素如:[[1,2,3],2,3,[1,3,[12,22]],'a',12] 
        經函式處理後[1, 2, 3, 2, 3, 1, 3, 12, 22, 'a', 12]
        
    '''    
    alist = []
    a = 0


    for sublist in list:
        try: #用try來判斷是列表中的元素是不是可迭代的,可以迭代的繼續迭代
            for i in sublist:
                alist.append (i)
        except TypeError: #不能迭代的就是直接取出放入alist
            alist.append(sublist)
    for i in alist:
        if type(i) == type([]):#判斷是否還有列表
            a =+ 1
            break
    if a==1:
        return printlist(alist) #還有列表,進行遞迴
    if a==0:
        return alist                  
list=[[1,2,3],2,3,[1,3,[12,22,[2,3]]],'a',12,range(10)]
a = printlist(list)
print(a)        
列印結果:

 [1, 2, 3, 2, 3, 1, 3, 12, 22, 2, 3, 'a', 12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

分析:運用遞迴一層一層的去掉巢狀列表的數

相關推薦

python列表拆分

場景:有一個多層巢狀的列表如:[[23],[3,3],[22,22],1,123,[[123,a],2]] 拆分成: def splitlist(list):     '''         現有一個列表,裡面元素包括 數字,字母,列表,字典等元素,現在要將字典去掉,並將列

Python列印列表

列表中巢狀列表 遞迴呼叫,將列表幾巢狀中的列表元素append到一個新列表中 如下列表 [ 1, 2, [ 3, 4, [ 5, 6,

Oracle儲存過程遊標的用法

Oracle sql指令碼程式碼   CREATE OR REPLACE   PROCEDURE P_DELETE_QK (pId in NUMBER, deep in NUMBER) AS   -- pId = 分類ID  deep = 深度,層級   on

關於python列表的遍歷和拆開(自用)

假設存在列表形如 list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]] ,則 使用遍歷查詢列表元素 list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]; for

python轉換為一維列表

1.遞迴方式 [1,2,[3,[4,5],6]] def expand_list(nested_list): for item in nested_list: if isinstance(item, (list, tuple)): fo

迴圈取的JsonArray的值,最後一可以是JsonArray也可以是jsonObject

/** * @param jsonStr json字串 * @param key 具體取值上一級對應的所有的 Key * @param value 具體取值對應的所有的key * @param type type 是最後一個key對應的是array還是jsonObject

php程式設計require和include導致檔案找不到的錯誤

php中include和require可以包含其他檔案 但常引入的是一個相對路徑 如此會產生一個檔案,如下: 例如: (網站根目錄) ├資料夾A │ │ │ └1.php ├資料夾B │ │

Python之路Python全域性變數與區域性變數、函式、函式遞迴 Python之路Python全域性變數與區域性變數、函式、函式遞迴

Python之路Python全域性變數與區域性變數、函式多層巢狀、函式遞迴 一、區域性變數與全域性變數   1、在子程式中定義的變數稱為區域性變數,在程式的一開始定義的變數稱為全域性變數。全域性變數作用域是整個程式,區域性變數作用域是定義該變數的子程式。 全域性變數

iOS開發-block如何使用__weak和__strong

1、關於__weak __weak只能在ARC模式下使用,也只能修飾物件(比如NSString等),不能修飾基本資料型別(比如int等) __weak修飾的物件在block中不可以被重新賦值。 __weak只在ARC下使用,可以避免迴圈引用。 __weak修飾物

html的超連結比如有,就會導致字串被擷取,等等等等很多問題

html中的超連結中比如有多層巢狀,就會導致字串被擷取,等等等等很多問題 引號巢狀兩層時,可以使用轉義或者單雙引號交替的形式實現,當引號巢狀達到三四層的時候,問題就出現了,怎麼解決呢? 舉個例子:"javascript:fnabc('abcd("123")')" html的href=以上

Vuev-for遍歷資料,不能重新渲染的問題

問題 { "properties": [ [ { "name": "property_name", "example": "travel_time", "value": "" }, { "name":

Bootstrap模態框時滾動條問題

在使用Bootstrap中模態框過程中,如果出現多層巢狀的時候,如開啟模態框A,然後在A中開啟模態框B,在關閉B之後,如果A的內容比較多,滾動條會消失,而變為Body的滾動條,這是由於模態框自帶的遮罩的問題。網上有朋友給出的解決方案是在A增加overflow:auto的方法解決,但是這種方法會使得頁面出現兩個

微信小程式入門教程--列表渲染迴圈及wx:key的使用

入門教程之列表渲染多層巢狀迴圈,目前官方的文件裡,主要是一維陣列列表渲染的案例,還是比較簡單單一,給剛入門的童鞋還是無從入手的感覺。 <view wx:for="{{items}}"> {{index}}: {{item.message}} </view> 還有一個九九乘法表把資

微信小程式入門教程---列表渲染迴圈及wx:key的使用(雙層for迴圈)

前言 入門教程之列表渲染多層巢狀迴圈,目前官方的文件裡,主要是一維陣列列表渲染的案例,還是比較簡單單一,給剛入門的童鞋還是無從入手的感覺。 <view wx:for="{{items}}"> {{index}}: {{item.message}} <

Python遞迴實現dict遍歷例項--三級選單/多級選單功能

要求:構建一個三(N)級選單,實現使用者可以根據指示選擇進入選單,退出選單,返回上層選單功能。知識點:dict資料的遍歷方法,遞迴遍歷方法。環境:Python3.6實現程式碼:#!/usr/bin/evn python # -*-coding:utf8 -*- class m

Python對商品屬性進行二次分類並輸出字典

題目有點長,感覺好像也解釋的不太清楚,但是大概意思就是,我們在逛一個網站的時候,譬如天貓,你會看到有“女裝”、“男鞋”、“手機”等等分類,點選進去又會有相應的品牌,女裝下面會有“snidle”、“伊芙麗”等品牌,男鞋下面會有“nike”、“adidas”等分類,

實戰c++的智慧指標unique_ptr系列-- 使用unique_ptr來避免if

今天看到這個文章,覺得沒有很nice。 我們太喜歡流程控制了,在程式中寫了太多的if else 也許我們對於邏輯非常的清晰,但是對於閱讀你程式碼的人來說就是一場災難。 很多人都說使用多型來避免過多的if else巢狀,但是有時候你會覺得新寫一個類似乎有

Java 從一個迴圈直接跳出

Java中如何從一個多層巢狀迴圈中退出,例如下面,有兩個迴圈,break只能退出一個for迴圈,不能直接跳過第二個for迴圈 for(Type type : types){for(Type t : types2){if(some condition){// Do some

python 跳轉的方法

#跳轉 #Python 不支援 goto 和 label,想要在多層巢狀迴圈中跳轉,稍稍有些麻煩。最簡單的做法 #是設定跳轉標誌,並在相應位置檢查。 def test(): stop = False while True: while Tru

Java異常處理的基本流程

       異常是程式中的一些錯誤,但並不是所有的錯誤都是異常,錯誤有時候是可以避免的。異常的物件有兩個來源,一是Java執行時環境自動丟擲系統生成的異常,而不管你是否願意捕獲和處理,它總要被丟擲!比如除數為0的異常。二是程式設計師自己丟擲的異常,這個異常可以是程式設