让我们说我有一个清单:
board = [2, 4, 0, 2, 8, 4, 4, 8, 0, 2, 0, 0, 4, 0, 2, 2]
我已经有一些代码,可以让列表显示如下:
^{pr2}$所以,我是否可以从每行中删除每0个,并将其添加回末尾(即使列表中有不同的值),这样板现在看起来是:
^{pr3}$我想使用循环来完成这一点,而不需要单独为每一行编写单独的代码。
也可以这样做,而不需要将初始列表设置为
^{pr4}$1行的代码为:
board = [2, 0, 0, 2]
k = len(board)
board[:] = (value for value in board if value != 0)
while len(board) < k:
board.append(0)
print(board)
Output = [2, 2, 0, 0]
有时候,简单的循环并没有什么问题:
为了好玩,下面是一个使用Python的一些功能工具的单行程序。关键成分是^{} 、^{} 和^{} ,它们都来自Python标准库文档的Functional Programming Modules部分。在
这里的大部分工作是将线路板的线性表示转换为嵌套列表表示,然后再将其转回。这里是一步一步的。在
首先,将平面表示转换为嵌套表示:
^{pr2}$我添加了额外的outer
list
调用,只是为了显示zip
iterable的内容。一旦所有的步骤都完成了就没有必要了。现在用合适的键对每一行进行排序,将0向右移动:再说一次,外部列表调用是不必要的,当我们把所有东西放在一起时,它就会丢失。这里的一个关键点是Python的^{} 函数提供了一个稳定的排序,因此非零元素之间的顺序保持不变。最后,将其展开到一个列表中:
把这些放在一起,去掉不必要的内部转换以列出,您将得到这篇文章顶部的一行代码。在
您可以使用
list.count
:输出:
^{pr2}$相关问题 更多 >
编程相关推荐