我是Python的初学者。现在我正在尝试创建一个构建Pascal三角形的算法。
我的第一步是创建一个基本的迭代,它将使用一个名为当前级别的列表,并根据它创建下一级别列表,如下所示:
我的代码只包含一次迭代,但迭代现在不是问题。我不明白如何正确地索引列表的元素。
有人可以给我一个提示吗?
谢谢!
currentlevel = [1]
nextlevel = []
leftnumber = 0 + currentlevel[0]
nextlevel.append(leftnumber)
for item[index] in currentlevel:
if index > 1 and index < len(currentlevel)-1:
item[index] = item[index] + item[index+1]
nextlevel.append(item[index])
else:
rightnumber = currentlevel[-1] + 0
nextlevel.append(rightnumber)
currentlevel = nextlevel
print(currentlevel)
答案 0 :(得分:1)
这不起作用:
for item[index] in currentlevel:
使用此:
for index, item in enumerate(currentlevel):
然后使用item[index]
的任何地方使用item
或currentlevel[index]
。除了...
除此之外:
item[index] = item[index] + item[index+1]
nextlevel.append(item[index])
这里最好使用另一个变量:
next_item = currentlevel[index] + currentlevel[index+1]
nextlevel.append(next_item)
虽然item
可行,但有点令人困惑;但是如果你使用currentlevel[index]
next_item
,那么你就是在破坏前一行。如果你想打印并忘记,这不是问题,但选择和灵活是件好事。
这将不必要地跳过两个元素:
if index > 1 and index < len(currentlevel)-1:
删除第一个子句:
if index < len(currentlevel)-1:
我现在看到的全部,无法测试。
编辑:不是错误,但0 + whatever
与whatever
相同。
答案 1 :(得分:0)
除非我错过了一些Python的新颖性,否则行for item[index] in currentlevel:
是语法错误(编辑:它不是语法错误,而是名称错误;请参阅Tutleman的评论)
尝试使用以下替代方法来获取list元素及其索引:
for index, item in enumerate(currentlevel):
或使用以下方法获取索引并通过它们访问元素:
for index in range(len(currentlevel)):
item = currentlevel[index]
查看this answer了解详情。
答案 2 :(得分:0)
我通常不会发布完整答案,但是......
maxlevel = 5
currentlevel = [1]
for levels in range(maxlevel):
nextlevel = [1]
for index,item in enumerate(currentlevel[0:-1]):
if (len(currentlevel) == 1):
break
nextlevel.append(item + currentlevel[index + 1])
nextlevel.append(1)
print(nextlevel)
currentlevel = nextlevel