列表扁平化的反面。创建子列表
给定一个列表和长度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