第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遍歷列表列表和單個元素

遍歷列表列表和單個元素

慕雪6442864 2023-06-20 14:41:53
給定以下列表,a = [[1,2,3],1,[1,2,43,5],[1,23,4,4],6.5,[1,1,2,45]]我想了解它的所有要素。如您所見,當(dāng)子集只有一個元素時(shí),我沒有 1 的列表,只有元素。所以當(dāng)然這是行不通的,因?yàn)榈牡诙€元素a是不可迭代的,for x in a:    for i in x:        print(i)        #do much more錯誤:   for i in x:TypeError: 'int' object is not iterable我可以執(zhí)行以下操作,但我發(fā)現(xiàn)它很不方便,因?yàn)槲冶仨殢?fù)制代碼,或者調(diào)用部分中的函數(shù)'#do much more。任何想法?for x in a:    if type(x) is list:        for i in x:            print(i)            #do much more    else:        print(x)        #do much more (the same as above)
查看完整描述

4 回答

?
尚方寶劍之說

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個贊

一種不需要類型檢查并避免重復(fù)自己的“pythonic”方法是使用所謂的 EAFP??“請求寬恕比請求許可更容易”)編碼風(fēng)格。

以下是如何將其應(yīng)用于此場景:

a = [[1,2,3],1,[1,2,43,5],[1,23,4,4],6.5,[1,1,2,45]]


for x in a:

? ? try:

? ? ? ? it = iter(x)

? ? except TypeError:

? ? ? ? it = [x]

? ? for i in it:

? ? ? ? print(i)

? ? ? ? #do much more


查看完整回答
反對 回復(fù) 2023-06-20
?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個贊

問題是你有一個集合,其中每個元素可以是一個集合或單個元素。如果您想避免扁平化,并且@green-cloak-guy 的扁平化輸出不適合您的使用,您可以在使用之前整理數(shù)據(jù),以便您可以將其作為有保證的列表列表使用。


a = [[1,2,3],1,[1,2,43,5],[1,23,4,4],6.5,[1,1,2,45]]


for x in a:

    if not isinstance(x, list):

        x = [x]

    for i in x:

        print(i)

        #do much more

說真的,我不懂 python,但這應(yīng)該適合你。


ps說真的,我不懂python。你只需拿起東西,我在 REPL 中運(yùn)行它來驗(yàn)證它。


查看完整回答
反對 回復(fù) 2023-06-20
?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個贊

您可以通過定義返回生成器的函數(shù)將附加邏輯移出循環(huán):


def flatten(items):

    for item in items:

        if isinstance(item, list):

            yield from flatten(item)

        else:

            yield item


a = [[1,2,3],1,[1,2,43,5],[1,23,4,4],6.5,[1,1,2,45]]


for i in flatten(a):

    print(i)

    # Your logic here!

您可以驗(yàn)證上面代碼的輸出:


1

2

3

1

1

2

43

5

1

23

4

4

6.5

1

1

2

45


查看完整回答
反對 回復(fù) 2023-06-20
?
慕碼人8056858

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個贊

編寫一個遞歸函數(shù)來為你做這件事:


def print_my_list(lst):

    for elem in lst:

        if type(elem) is list:

            print_my_list(elem)

        else:

            print(elem)

一件好事是,這將適用于相互嵌套的任意數(shù)量的列表,將它們?nèi)俊罢蛊健薄?/p>


查看完整回答
反對 回復(fù) 2023-06-20
  • 4 回答
  • 0 關(guān)注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號