列表扁平化的反面。創建子列表
給定一個列表和長度n返回長度爲n的子列表的列表。
def sublist(lst, n):
sub=[] ; result=[]
for i in lst:
sub+=[i]
if len(sub)==n: result+=[sub] ; sub=[]
if sub: result+=[sub]
return result
一個例子:
如果該列表是:
[1,2,3,4,5,6,7,8]
,n是:
3
返回:
[[1, 2, 3], [4, 5, 6], [7, 8]]
有沒有更具說服力/簡潔的方式?
順便說一句,附加在名單列表(在上下文中)什麼是首選的:
list1+=[list2]
或者:
list1.append(list2)
鑑於(根據Summerfeild的 '在Python 3編程' ) 他們是一樣的?
謝謝。
感謝unutbu,不得不笑笑,這是使用列表理解的瑣碎。強調我需要研究它們。關於+ = vs追加,我明白不同,注意到我比較了list1 + = [list2]到list1.append(list2),而不是list1 + = list2和list1.append(list2)。謝謝偉大的回答/討論。 – 2010-12-21 17:10:17
@Michael Puckett:哎呀,我誤解了你的問題的第二部分。編輯... – unutbu 2010-12-21 17:27:02