python - 如何删除输出每行末尾的额外零?
问题描述
此代码生成一个帕斯卡三角形:
import pprint
def nextRow(cRow):
cRow.append(0)
return [cRow[m - 1] + cRow[m + 1] for m in range(len(cRow) - 1)]
def Pascal(n):
row = [0, 0, 0, 0, 1, 0, 0, 0, 0]
l = []
for h in range(n):
l.append(row)
row = nextRow(row)
return l
pprint.pprint(Pascal(5))
我正在尝试删除多余的零,而不仅仅是在代码末尾删除它们:
输出:
[[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 1, 0, 0, 0, 0],
[0, 0, 1, 0, 2, 0, 1, 0, 0, 0],
[0, 1, 0, 3, 0, 3, 0, 1, 0, 0],
[1, 0, 4, 0, 6, 0, 4, 0, 1, 0]]
期望的输出:
[[0, 0, 0, 0, 1, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 1, 0, 0, 0],
[0, 0, 1, 0, 2, 0, 1, 0, 0],
[0, 1, 0, 3, 0, 3, 0, 1, 0],
[1, 0, 4, 0, 6, 0, 4, 0, 1]]
解决方案
您可以将计算结果保存在l
没有row
最后一个元素的情况下,l.append(row[:-1])
而不是保存l.append(row)
在Pascal
函数中。
import pprint
def nextRow(cRow):
cRow.append(0)
return [cRow[m - 1] + cRow[m + 1] for m in range(len(cRow) - 1)]
def Pascal(n):
row = [0, 0, 0, 0, 1, 0, 0, 0, 0]
l = []
for h in range(n):
l.append(row[:-1])
row = nextRow(row)
return l
pprint.pprint(Pascal(5))
推荐阅读
- rxjs - RxJS observable 从第一次发射开始发射先前值和当前值
- php - 将变量 SESSION 放入另一个变量中,删除 SESSION 内容变量
- google-data-studio - 如何将 UTC 日期时间转换为 EST 时区?
- javascript - React Redux 持久化
- vue.js - Vuejs,在生产模式下捕获警告
- c++ - C++ - gtkmm 在 ToolButton 中显示文本和图像
- rxjs - 如何重置 ReplaySubject 上的扫描累加器?
- java - 如何使用 Mockito 模拟服务?
- angular - 阻止角度分量上的路由器更改
- python - 错误:不支持轮子