在 for 循环中对迭代放置内联条件

  • 本文关键字:条件 迭代 for 循环 python
  • 更新时间 :
  • 英文 :


我当前的代码如下所示:

def my_func(target_user_id):
for user_id in user_dictionary:
if(user_id != target_user_id):
#do something

我可以在 python 中做一些看起来像下面的事情吗?

def my_func(target_user_id):
for user_id != target_user_id in user_dictionary:
#do something

因此,我们可以避免一种明显的条件块。感谢您的投入。

你的代码没问题。如果您希望避免循环中的测试,您有 2 个选项:

1(循环生成器理解可以做到这一点。它为此创建了第二个循环...

for user_id in (x for x in user_dictionary if x != target_user_id):

2(最好使用filter来创建非原生python循环

for user_id in filter(lambda x: x != target_user_id, user_dictionary):
...

但它迫使创建一个lambda.

因此,所有方法都需要与数据一起计时,以选择最有效的方法。

如本问题所示,您可以使用以下内容:

def my_func(target_user_id):
for user_id in {k: v for k, v in user_dictionary.iteritems() if k != target_user_id}:
#do something

或者,如果您使用的是 Python 3:

def my_func(target_user_id):
for user_id in {k: v for k, v in user_dictionary.items() if k != target_user_id}:
#do something

因此,您的字典在循环之前会被过滤,因此您无需检查user_id是否不是实际循环中的target_user_id

最新更新