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

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)證它。

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

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>
添加回答
舉報(bào)