Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数仅检查1个列表条目_Python_List - Fatal编程技术网

Python 函数仅检查1个列表条目

Python 函数仅检查1个列表条目,python,list,Python,List,编辑: filter_list([1, 2, 3]) = True filter_list([0, 2, 3]) = False filter_list([1, 50, 3]) = True (which should be False) filter_list([1.1, 2, 3]) = False (which should be True) 这将导致[6],我不想这样做。您过早返回false,因为您总是从第一次迭代返回。此外,您的类型检查和将引发大多数任意输入的错误。改用。此外,Pyt

编辑:

filter_list([1, 2, 3]) = True
filter_list([0, 2, 3]) = False
filter_list([1, 50, 3]) = True (which should be False)
filter_list([1.1, 2, 3]) = False (which should be True)
这将导致[6],我不想这样做。

您过早返回false,因为您总是从第一次迭代返回。此外,您的类型检查和将引发大多数任意输入的错误。改用。此外,Python允许。你能做到

def filter_list(elements):
    data = [elements]
    for a in elements:
        if a == int(a) and a >= 1 and a < 50:
            filter = []
            filter.append(a)
    return filter
filter_list([2, 1, 4, 5, 6])
要编译新的匹配值列表,请执行以下操作:

def filter_list(elements):
    return any(isinstance(a, (int, float)) and 1 <= a < 50 for a in elements)
或更短,使用:


由于函数的名称,我将建议另一种方法:使用

基本上,您必须实现一个函数,在单个项上返回布尔值。然后,使用reduce将此函数应用于列表中的每个元素

def filter_list(elements):
    return [a for a in elements if isinstance(a, int) and 1 <= a < 50]
应用于您的问题,您应该确保筛选列表的大小与原始列表相同,或者修改oracle函数以执行相反的操作,并确保结果为空

print filter(f, [0,1,2])
[1, 2]

此外,True和False是类型化字符串,而您希望它们是布尔值。因此是真是假。

在循环的第一次迭代期间,您将始终从函数返回:而不迭代列表的其余部分。你知道为什么吗?在检查了第一个元素之后从循环返回,还会发生什么?对于神秘的部分:int1.1或float1.1导致1,它不等于1.1。所以这不是一个检查a是整数还是浮点数?如果这是目的的话,那么我现在不是返回,而是创建一个名为filter的空列表。我在它后面加了一个字母。现在,只有列表数据中的最后一个数字被附加到它。那不是我想要的。我将编辑这个问题。应该是return True或return False-而不是return False,在Python中应该是True
def filter_list(elements):
    # instantiate the new list before the loop
    fil = []  # do not shadow the built-in filter function
    for a in elements:
        if isinstance(a, int) and 1 <= a < 50:
            fil.append(a)
    return fil
def filter_list(elements):
    return [a for a in elements if isinstance(a, int) and 1 <= a < 50]
f = lambda x : 1.0 <= x < 50

# Is equivalent to
def f(item):
  return 1.0 <= item < 50
print filter(f, [0,1,2])
[1, 2]
def check(lst):
      return len(lst) == len(filter(f, lst))

print check([0,1,2])
# Outputs False
print check([1,2,3])
# Outputs True