Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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 确定一个列表中的元素是否小于另一个列表中的元素_Python_List_Comparison - Fatal编程技术网

Python 确定一个列表中的元素是否小于另一个列表中的元素

Python 确定一个列表中的元素是否小于另一个列表中的元素,python,list,comparison,Python,List,Comparison,我想检查是否有其他列表中的一个对应元素的特定间隔 如果列表中至少有一个元素属于该区间,我希望返回1(无论有多少个元素属于该区间),否则返回0。目标是获得一个新列表,其中包含0和1(与间隔数相同)。 我尝试获取两个列表(时间和间隔),并检查time中的一个(或多个)元素是否小于interval中的一个元素 以下是我尝试过的: time = [4.84, 9.82, 20.22, 25.66, 28.67, 31.28, 37.08, 43.06, 44.05, 49.24, 62.26, 69.1

我想检查是否有其他列表中的一个对应元素的特定间隔

如果列表中至少有一个元素属于该区间,我希望返回1(无论有多少个元素属于该区间),否则返回0。目标是获得一个新列表,其中包含0和1(与间隔数相同)。 我尝试获取两个列表(时间和间隔),并检查
time
中的一个(或多个)元素是否小于
interval
中的一个元素

以下是我尝试过的:

time = [4.84, 9.82, 20.22, 25.66, 28.67, 31.28, 37.08, 43.06, 44.05, 49.24, 62.26, 69.1, 83.52]
newlist=[]

interval = []
for t in range(10, 110, 10):
    interval.append(t)
    
for n, i in enumerate(interval):
    for w, elt in enumerate(time):
        if elt < i and elt > i-10:
            newlist.append(1)
        else:
            newlist.append(0)
newlist
以下是我想要得到的:

[1, 0, 1, 1, 1, 0, 1, 0, 1, 0]

得到结果的原因是,对于每个时间间隔,您都在循环所有时间值,并为时间列表中的每个时间值追加0或1。但是,您只需要为完整的时间列表附加一个0或1

另外,在两个循环中使用
enumerate
是完全无用的,因为您不使用索引n和w

time = [4.84, 9.82, 20.22, 25.66, 28.67, 31.28, 37.08, 43.06, 44.05, 49.24, 62.26, 69.1, 83.52]

interval = []
for t in range(10, 110, 10):
    interval.append(t)

new = []
for i in interval:
    if any([val < i and val > i-10 for val in time]):
        new.append(1)
    else:
        new.append(0)
列表理解只是创建列表的for循环的一个简短符号。例如,您可以将创建列表间隔的代码重写为列表理解,如下所示:

[True, True, False, False, False, False, False, False, False, False, False, False, False]
interval = [t for t in range(10, 110, 10)]

如果列表中的任何元素为
True
,则函数
any()
将返回
True
,否则它将返回
False

,因为对于每个间隔,您将循环所有时间值,并为时间列表中的每个时间值追加0或1。但是,您只需要为完整的时间列表附加一个0或1

另外,在两个循环中使用
enumerate
是完全无用的,因为您不使用索引n和w

time = [4.84, 9.82, 20.22, 25.66, 28.67, 31.28, 37.08, 43.06, 44.05, 49.24, 62.26, 69.1, 83.52]

interval = []
for t in range(10, 110, 10):
    interval.append(t)

new = []
for i in interval:
    if any([val < i and val > i-10 for val in time]):
        new.append(1)
    else:
        new.append(0)
列表理解只是创建列表的for循环的一个简短符号。例如,您可以将创建列表间隔的代码重写为列表理解,如下所示:

[True, True, False, False, False, False, False, False, False, False, False, False, False]
interval = [t for t in range(10, 110, 10)]

函数
any()
如果列表中的任何元素为
True
,则返回
True
,否则返回
False

问题实际上可能更清楚。问题实际上可能更清楚。