【问题标题】:How do I search a list for a number between two values?如何在列表中搜索两个值之间的数字?
【发布时间】:2015-10-14 12:39:51
【问题描述】:

在 Python 中,我有一个使用 .append() 添加的数字列表。我需要搜索我的列表以查找它是否包含两个设定值之间的任何特定整数,例如/在 30 和 40 之间。

我知道我可以使用代码 if x in n: 在列表中搜索单个整数,但我不知道如何为多个整数执行此操作。

【问题讨论】:

  • 您还有其他代码可以显示吗?
  • 创建一个新列表[x for x in number_list if 30 < x < 40]
  • 搞定了,谢谢大家

标签: python list search


【解决方案1】:

这是为您准备的功能。它返回一个列表,其中包含给定的下限和上限之间的所有值,包括重复项。如果您想去除重复项,请使用set。我不会先对它进行排序,因为这比仅遍历列表效率低。

def between(l1,low,high):
    l2 = []
    for i in l1:
        if(i > low and i < high):
            l2.append(i)
    return l2


l = [1,3,4,5,1,4,2,7,6,5] 

print( between(l,2,5) )

[3,4,4]

编辑:

或者,嘿,如果您对整个简洁性感兴趣,让我们使用列表推导!

l = [1,3,4,5,1,4,2,7,6,5]
l2 = [i for i in l if i > 2 and i < 5]    
print(l2)

[3,4,4]

【讨论】:

  • 2 &lt; i &lt; 5 更简洁:)
【解决方案2】:

上面的一些答案是有效的。我只是提供一种对列表进行排序的方法。

filter(lambda x: x>30 and x<40,sorted(a))

a 是输入列表

【讨论】:

    【解决方案3】:

    由于你还没有提供任何代码,我给你一个简单的算法:

    for every number in the list
        if the number is greater than 30 and less than 40
            do something with the number
    

    例如,如果您只需要知道这样的数字是否存在,则可以在满足条件后将布尔值设置为 true。

    This answer 包含一种更简洁的方式来完成您的想法。

    【讨论】:

      【解决方案4】:
      min=30
      max=40
      
      nums = [8, 32, 35, 180]
      nums.append(13)
      
      for x in nums:
         if x > min and x < max: print x
      

      【讨论】:

      • x &gt; min and x &lt; max 可以写成更清晰的min &lt; x &lt; max - 没有人使用链式比较吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 2022-01-11
      • 1970-01-01
      相关资源
      最近更新 更多