python-2.7 - 将所有非 -'0' 推到前面

标签 python-2.7 iteration

我正在使用以下(丑陋的)代码段来迭代带有字符串的二维列表。它检查其中一个值是否为 '0'以及它是否不是最后一个元素。如果不是,它会将当前元素(即 '0')的值与下一个元素的值进行切换。

我打算用这个功能完成的是推送所有非 '0'后面的值(value)观。它显然没有按预期工作(这是一个开始),但我想不出一种方法来完成它而不会把它变成一团糟。

拼图的缺失部分是什么?递归在这里有帮助吗?

['0', '2', '0', '4']

应该变成
['2', '4', '0', '0']


['0', '3', '1', '0', '2']

进入
['3', '1', '2', '0', '0']  

当前片段:
for idx, x in enumerate(self.list_x):
     for idy, i in enumerate(x):
        if i == '0':
            try:
                if x[idy+1]:
                    pass
            except IndexError:
                pass
            else:
                temp = i
                self.list_x[idx][idy] = x[idy+1]
                self.list_x[idx][idy+1] = temp

最佳答案

In [63]: A = ['0', '2', '0', '4']

In [64]: B = ['0', '3', '1', '0', '2']

In [65]: [i for i in A if i!='0'] + [i for i in A if i=='0']
Out[65]: ['2', '4', '0', '0']

In [66]: [i for i in B if i!='0'] + [i for i in B if i=='0']
Out[66]: ['3', '1', '2', '0', '0']

关于python-2.7 - 将所有非 -'0' 推到前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33160232/

相关文章:

自定义类的 C++ begin() 和 end() 的 Python 等价物

python - 在 Python 中并行化 for 循环以加快算法速度

python - Scrapy:导入错误:没有名为管道的模块

python - 在 Python 的空列表中一起使用 "not"和 "bool"的不明确行为

vbscript - VBScript 上的 "Continue"(到下一次迭代)

delphi - 递归遍历 TreeView 中的节点?

Python argparse 条件要求

python - pip install pkg 给出权限被拒绝 :/Library/Python/2. 7/site-packages/pkg

python - 从列表中迭代删除(Python 2)

c# - foreach循环,在循环语句外导出迭代集合是不是更快?