将内联条件放在for循环中的迭代中

时间:2018-06-21 08:09:15

标签: 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 个答案:

答案 0 :(得分:4)

您的代码还可以。如果您想避免循环测试 ,则有两种选择:

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

因此,所有方法都需要与您的数据同步,以选择最有效的方法。

答案 1 :(得分:0)

this Question中所示,您可以使用类似以下内容的

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