grf1973
发表于 2018-3-28 09:09:30
def newlist(n):
if n==0:
return []
elif n>=1:
arr=list(range(0,n+1))
brr=[]
k=0
s=1
for i in range(1,n+1):
e=n+1 if s+i>n+1 else s+i
brr.append(arr)
s=e
if e==n+1:
break
return brr
print(newlist(12))
大头目
发表于 2018-3-28 09:14:06
#n = 0返回空列表,n >= 1 返回二维列表,子列表的最大长度分别为1,2,3,4......
#题目中的代码32行是不是有问题?
def newlist(n):
list_new = []
if n != 0:
list1,list2,list3,list4 = [],[],[],[]
for i in range(1,n+1):
if i%10 == 1:
list1.append(i)
elif 1 < i%10 < 4:
list2.append(i)
elif 3 < i%10 < 7:
list3.append(i)
elif 6 < i%10 < 11 or i%10 == 0:
list4.append(i)
if len(list4) == 4 or i == n:
if list1 != []:
list_new.append(list1)
if list2 != []:
list_new.append(list2)
if list3 != []:
list_new.append(list3)
if list4 != []:
list_new.append(list4)
list1,list2,list3,list4 = [],[],[],[]
return list_new
else:
return list_new
print(newlist(22))
BlueSand
发表于 2018-3-28 09:35:07
#!/usr/bin/env python
#coding=UTF-8
def newlist(n):
if n == 0:
return []
lenlist = 1
i = 0
listitem = 0
result = []
while listitem < n:
min = listitem
max = (listitem + lenlist) if (listitem + lenlist) <=n else n
result.append([(i + 1) for i in range(min, max)])
listitem =listitem + lenlist
lenlist += 1
return result
print(newlist(20))
colinshi
发表于 2018-3-28 09:40:52
def newlist(n):
res = []
if n == 0:
return res
row =0
columns = 1
res.append([])
for i in :
if len(res[-1]) == columns:
res.append([])
row += 1
columns = row+1
res.append(i)
return res
if __name__ == '__main__':
print(newlist(12))
我想了1个多小时才明白如何做这道题。开始我觉得两个for循环能够搞定。后来发现掉坑里了。最终还是用二维数组的行列下标来处理。
yjsx86
发表于 2018-3-28 09:50:40
def newlist(n):
gen = (x for x in range(1,n+1))
rs = []
num = 1
while True:
try:
temp = []
for i in range(num):
temp.append(next(gen))
num+=1
except StopIteration:
break
finally:
if temp:
rs.append(temp)
return rs
if __name__ == '__main__':
for y in range(13):
print('newlist(%d) : %s' % (y,newlist(y)))
newlist(0) : []
newlist(1) : []
newlist(2) : [, ]
newlist(3) : [, ]
newlist(4) : [, , ]
newlist(5) : [, , ]
newlist(6) : [, , ]
newlist(7) : [, , , ]
newlist(8) : [, , , ]
newlist(9) : [, , , ]
newlist(10) : [, , , ]
newlist(11) : [, , , , ]
newlist(12) : [, , , , ]
nononoyes
发表于 2018-3-28 10:51:49
def fun(n):
resultlist = []
sum = 0
maxlen = 0
lastlen = 0
if n==0:
return resultlist
elif n == 1:
list1 =
resultlist.append(list1)
return resultlist
else:
for i in range(1,n+1):
sum +=i
if sum>n:
maxlen = i-1
lastlen = n-(sum-i)
break
sum2 = 1
for i in range(1, maxlen + 1):
list1 = []
for j in range(sum2, n + 1):
if len(list1) < i:
list1.append(j)
else:
break
resultlist.append(list1)
sum2 = i + sum2
lastone = []
for i in range(n - lastlen + 1, n + 1):
lastone.append(i)
if lastone:
resultlist.append(lastone)
return resultlist
print(fun(12))
idol
发表于 2018-3-28 10:52:58
def newlist(n):
if n<0 :
print('请输入正确参数值')
return
# 定义返回列表
retlist = []
# 生成1-n 的临时列表
temlist = []
for i in range(1,n+1):
temlist.append(i)
i = 0
c = 1
whilei < n:
if i+c > n: # 添加末尾不够4个的值
retlist.append(temlist)
else:
retlist.append(temlist)
i += c
if c<4 :
c += 1
else:
c = 4
return retlist
tsembrace
发表于 2018-3-28 11:38:25
'''
建立一个函数newlist(n),参数n为0或正整数,返回一个列表。
当n = 0 返回[]
当n = 1 返回[]
当n = 2 返回[, ]
当n = 3 返回[, ]
当n = 4 返回[, , ]
......
当n = 12返回[, , , , ]
即n = 0返回空列表,n >= 1 返回二维列表,子列表的最大长度分别为1,2,3,4......
'''
def newlist(n):
if n==0:
return []
else:
listx=[]
listy=[]
maxlen=1
for i in range(1,n+1):
listy.append(i)
if len(listy)>=maxlen:
listx.append(listy)
listy=[]
maxlen=maxlen+1
if listy==[]:
return listx
else:
listx.append(listy)
return listx
print(newlist(1))
print(newlist(9))
print(newlist(15))
天圆突破
发表于 2018-3-28 12:51:37
def newlst(n):
nlst, lst, i = list(), list(range(1,n+1)), 1
while lst != []:
nlst.append(lst)
lst = lst
i += 1
return nlst
if __name__ == '__main__':
print(newlst(31))
checkily
发表于 2018-3-28 14:16:33
本帖最后由 checkily 于 2018-3-28 22:18 编辑
def newlist(n):
result = []
for i in range(n):
start = 1+int(i*(i+1)/2)
end = 1+int((i+1)*(i+2)/2)
if n >= end:
result.append()
else:
lresult.append()
break
return result
8306最硬
发表于 2018-3-28 14:32:51
def fun(n):
lst, temp, length = [], [], 1
for i in range(1, n + 1):
temp.append(i)
if len(temp) >= length:
lst.append(temp)
temp = []
length += 1
if temp: lst.append(temp)
return lst if n else []
小骚猫
发表于 2018-3-28 17:39:33
哎没想出来
Chase_Kas
发表于 2018-3-28 17:55:20
写出来总感觉怪怪的~~等着看其他大佬的答案
def newlist(n):
newlist = []
sublist = []
k = 1
for i in range(1, 999):
if k <= n:
for j in range(0, i):
if k <= n:
sublist.append(k)
k += 1
else:
break
else:
break
newlist.append(sublist)
sublist = []
return newlist
for i in range(13):
print(newlist(i))
fan1993423
发表于 2018-3-28 21:48:22
graceasyi 发表于 2018-3-27 16:46
抢个沙发~
这个也算啊,题目要求要换行。你都没换行
fan1993423
发表于 2018-3-28 21:50:35
这个题目不是要求换行显示吗?我一直在想怎么换行解决。@冬雪雪冬 [,
,
,
,
]
塔利班
发表于 2018-3-28 22:14:12
fan1993423 发表于 2018-3-28 21:50
这个题目不是要求换行显示吗?我一直在想怎么换行解决。@冬雪雪冬 [,
,
,
认真了大兄弟,题目要求返回列表,你这是进行格式打印
checkily
发表于 2018-3-28 22:20:07
checkily 发表于 2018-3-28 14:16
打错了。是result
冬雪雪冬
发表于 2018-3-28 22:20:09
fan1993423 发表于 2018-3-28 21:50
这个题目不是要求换行显示吗?我一直在想怎么换行解决。@冬雪雪冬 [,
,
,
要求是返回一个二维列表,而python的打印print函数是没有自动换行功能的,我在题目中加上换行是为了表示清楚。
fan1993423
发表于 2018-3-28 23:11:55
塔利班 发表于 2018-3-28 22:14
认真了大兄弟,题目要求返回列表,你这是进行格式打印
我当时就在想怎么打印换行,我就一直在想\n用循环加进去,后来我发现做不来,就放弃了
fan1993423
发表于 2018-3-28 23:12:45
冬雪雪冬 发表于 2018-3-28 22:20
要求是返回一个二维列表,而python的打印print函数是没有自动换行功能的,我在题目中加上换行是为了表示 ...
哦。那这样这个题还是很简单的,我主要当时就在想\n怎么加才能打出你题目中的效果