Python 将if条件与for循环混合

Python 将if条件与for循环混合,python,Python,我有下面的for和if条件,for循环后跟一个if条件, 关于如何将它们组合成一行,有什么建议吗 for x in ids: if x!=12345 不要这样做。把一切都放在一条线上是个坏主意。它破坏了可读性,也没有任何好处。上面的内容不起作用。我仍然看到for循环正在进入,即使i=12345,我感觉您正在尝试做一些比最初透露的更复杂的事情。为什么不在帖子中编辑一个示例,我会更新我的答案。一种可能是id实际上是一个字符串,因为“12345”!=12345,这个测试实际上并没有排除任何可能

我有下面的for和if条件,for循环后跟一个if条件, 关于如何将它们组合成一行,有什么建议吗

for x in ids:
   if x!=12345

不要这样做。把一切都放在一条线上是个坏主意。它破坏了可读性,也没有任何好处。上面的内容不起作用。我仍然看到for循环正在进入,即使i=12345,我感觉您正在尝试做一些比最初透露的更复杂的事情。为什么不在帖子中编辑一个示例,我会更新我的答案。一种可能是id实际上是一个字符串,因为“12345”!=12345,这个测试实际上并没有排除任何可能性。@Steve314:整个理解语法是从集合的数学表达式中产生的,实际上是一个循环和一堆过滤器ifs。不确定实现完整的集合表示法语法有多容易,though@inspectorG4dget-我根本不建议对列表/生成器的理解进行任何更改。我建议可以扩展传统的for循环,以支持列表/生成器理解的全部或部分灵活性,因此您可以例如,如果predi:在带有一个冒号的单行上为xs中的I编写,而不是为j中的I编写xs中的j,如果predj:-则不需要理解。
for x in (i for i in ids if i!=12345):
    # do stuff

In [37]: ids
Out[37]: [12343, 12344, 12345, 12346, 12347, 12348]

In [38]: for x in (i for i in ids if i!=12345):
   ....:     print x
   ....:     
12343
12344
12346
12347
12348