对于xPython中列表中的每个连续或更多的零运行,我想在运行中除了x它们之外全部为零.如果x = 0,则删除全部为零.
我在考虑一个Python函数,它将列表L和数字x作为输入.
例如,让我们L = [7, 0, 12, 0, 0, 2, 0, 0, 0, 27, 10, 0, 0, 0, 0, 8].
x = 0,那么回来L = [7, 12, 2, 27, 10, 8]x = 1,那么回来L = [7, 0, 12, 0, 2, 0, 27, 10, 0, 8]x = 2,那么回来L = [7, 0, 12, 0, 0, 2, 0, 0, 27, 10, 0, 0, 8]x = 3,那么回来L = [7, 0, 12, 0, 0, 2, 0, 0, 0, 27, 10, 0, 0, 0, 8]x = 4,则返回L = [7, 0, 12, 0, 0, 2, 0, 0, 0, 27, 10, 0, 0, 0, 0, 8](与原始相同L)x >= 5,则返回原始L,因为没有连续5个或更多个零的运行.任何帮助将是真诚的感谢.
这很容易作为发电机.list如果您想要删除零运行的新列表,请在构造函数中包含对它的调用.
def compact_zero_runs(iterable, max_zeros):
zeros = 0
for i in iterable:
if i == 0:
zeros += 1
if zeros <= max_zeros:
yield i
else:
zeros = 0
yield i
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |