【问题标题】:Get value inside list in series of conditions在一系列条件下获取列表内的值
【发布时间】:2015-06-16 03:38:26
【问题描述】:

假设你有以下代码:

if "walk" in myList or "run" in myList or "fly" in myList:
    print("You "+dosomething()+" to the chamber on the left")

假设只有一个条件会返回为真,如何找出条件中返回 true 的值,然后打印该值?

【问题讨论】:

    标签: python indexing conditional-statements


    【解决方案1】:

    我会这样做:

    for action in ('walk', 'run', 'fly'):
        if action in myList:
            print("You {} to the chamber on the left.".format(action))
            break
    

    一旦找到其中一个动作,break 将停止 for 循环,因此先显示哪个动作。

    【讨论】:

      【解决方案2】:

      将 mylist 转换为 set 并使用 set intersection

      myset = set(mylist)
      
      hay = {"walk","run","fly"}
      check = hay & myset
      if check:
          check = check.pop()
          # Do something with check
      

      注意只要您的假设保持正确assuming only one condition will return as true

      ,这将起作用

      【讨论】:

      • 你可以用if {'walk', 'run', 'fly'}.intersection(mylist):缩短这段代码,但它肯定会比我的循环更有效
      • @jonrsharpe:是的,我知道,但是对于上面的代码,如果它是重复的代码,每次遇到语句时创建集合可能会有不必要的开销。
      • 好点。我认为 Python 在这些情况下优化了集合文字,但我不记得我在哪里读到的......
      猜你喜欢
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 2021-06-14
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多