1. 程式人生 > >關於python中列表的遍歷和多層巢狀拆開(自用)

關於python中列表的遍歷和多層巢狀拆開(自用)

假設存在列表形如 list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]] ,則

使用遍歷查詢列表元素

list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]];
for i in list_1:
print(i);控制檯輸出[1, 2],[3, 4, 5],[6, 7],[8],[9]

將多層巢狀拆開的方法有:

1.列表推導法:

list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]];
list_2 = [i for j in list_1 for i in j] ;
print(list_2)控制檯輸出[1, 2, 3, 4, 5, 6, 7, 8, 9]

2.第三模組組合法

list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]];
list_2 = []
for _ in list_1:
    list_2 += _
print(list_2)

3.使用sum

> list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]] ;
> list_2 = sum(list_1,[]) ;
> print(list_2)

4.對於複雜一些的,如:list =[1,[2],[[3]],[[4,[5],6]],7,8,[9]],上面的方法就不好使了。得換個方法了,這裡使用遞迴的方法解決。

> def flat(nums):
>     res = []
>     for i in nums:
>         if isinstance(i, list):
>             res.extend(flat(i))
>         else:
>             res.append(i)
>     return res

例題:假如存在列表goodslist=[[‘Iphone’, 5800], [‘Mac Pro’, 12000], [‘Bike’, 800], [‘Alex Python’, 89], [‘Starbuck Latte’, 30], [‘Cap’, 45], [‘Air conditioning’, 3000], [‘Ipad’, 4200]];,判斷其含有Bike這一元素。
則:

goodslist=[['Iphone', 5800], ['Mac Pro', 12000], ['Bike', 800], ['Alex Python', 89], ['Starbuck Latte', 30], ['Cap', 45], ['Air conditioning', 3000], ['Ipad', 4200]];
list = [i for j in goodslist for i in j]
print(list)
print('Bike' in list)