代码:
n=input()
list1=[]
list2=[]
ee=0
u=0
for i in range(int(n)):
if i==0:
list2.append(1)
u+=1
elif i==1:
list2.append(1)
u+=1
list2.append(1)
u+=1
else:
for j in range(i+1):
if j==0:
list2.append(1)
u+=1
elif j==i:
list2.append(1)
u+=1
else:
new=list1[i-1][j-1]+list1[i-1][j]
u+=1
list2.append(new)
if new==int(n):
list1.append(list2)
ee=1
break
#print(list2)
list1.append(list2)
list2=[]
if ee==1:
break
#print(list1[-1])
count=sum([i for i in range(len(list1)-1)])+len(list1[-1])
print(count)
没有获得满分,希望得到指导(部分超时)
另外查到的一个二维列表转一维的方法记录一下:
.flatten()
一、用在数组
>>> a = [[1,3],[2,4],[3,5]]
>>> a = array(a)
>>> a.flatten()
输出:
array([1, 3, 2, 4, 3, 5])
二、用在列表
如果直接用flatten函数会出错
>>> a = [[1,3],[2,4],[3,5]]
>>> a.flatten()
输出:
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
a.flatten()
AttributeError: 'list' object has no attribute 'flatten'
正确的用法
>>> a = [[1,3],[2,4],[3,5],["abc","def"]]
>>> a1 = [y for x in a for y in x]
>>> a1
输出:
[1, 3, 2, 4, 3, 5, 'abc', 'def']
或者
>>> a = [[1,3],[2,4],[3,5],["abc","def"]]
>>> flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]
>>> flatten(a)
输出:
[1, 3, 2, 4, 3, 5, 'abc', 'def']
三、用在矩阵
>>> a = [[1,3],[2,4],[3,5]]
>>> a = mat(a)
>>> y = a.flatten()
>>> y
输出:
matrix([[1, 3, 2, 4, 3, 5]])
>>> y = a.flatten().A
>>> y
输出:
array([[1, 3, 2, 4, 3, 5]])
>>> shape(y)
输出:
(1, 6)
>>> shape(y[0])
输出:
(6,)
>>> y = a.flatten().A[0]
>>> y
输出:
array([1, 3, 2, 4, 3, 5])