在CodeWars中做Flatten這道題顽冶,之前一直沒做出來杂彭,今天看Python Documentation發(fā)現(xiàn)list有一個(gè)extend()方法县耽,便做了出來,如下:
def flatten(lst):
ret = []
for item in lst:
if type(item) is int:
ret.append(item)
else:
ret.extend(item)
return ret
做雖然是做出來了包帚,可是不夠美觀啊盟榴。查看別人的代碼之后,居然有一行代碼做出來的
def flatten(lst):
return sum(([i] if not isinstance(i, list) else i for i in lst), [])
查看官方文檔有:
原來是傳入空列表作為初值婴噩,用于列表的相加擎场,真是長(zhǎng)見識(shí)了。但是几莽,Python官方并不推薦這種做法來做可迭代對(duì)象的連接迅办,而推薦使用itertools的chain()方法更快速,如下
from itertools import chain
def flatten(lst):
try:
return list(chain.from_iterable(lst)) # or return list(chain(*lst))
except:
return lst