根据父列表将值分组到列表中

std*_*dmn 3 python nested list python-2.x python-2.7

我有一个列表,我试图将其与其他两个列表中的值的顺序组合进行比较。下面的代码有效,但输出值位于单个平面列表中。

values = [3,6,7,8]
list1 = [2,5]
list2 = [4,8]
main = []

for i in values:
    for x,y in zip(list1, topElevation):
        if x<i<y:
            main.append(i)
>>>[3,6,7]
Run Code Online (Sandbox Code Playgroud)

如何组织脚本,以便将值拆分为多个列表,以便第一个嵌套列表采用list1[0]<i<list2[0]、第二个list1[1]<i<list2[1]等等的所有值...(通过list1[n]<i<list2[n])?在这种情况下,输出将是:

>>>[[3],[6,7]]
Run Code Online (Sandbox Code Playgroud)

luo*_*luo 5

您可以使用带有过滤器的列表理解来执行此操作:

\n
>>> [filter(lambda x: l < x < r, values) for l, r in zip(list1, list2)]\n[[3], [6, 7]]\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,这filter(function, iterable)相当于[item for item in iterable if function(item)]

\n

所以等效解\xef\xbc\x9a

\n
>>> [[item for item in values if l < item < r] for l, r in zip(list1, list2)]\n[[3], [6, 7]]\n
Run Code Online (Sandbox Code Playgroud)\n
\n

细节:

\n
\n

过滤器(函数,可迭代)

\n

从函数返回 true 的list那些元素构造 a 。可以是 a 、支持 iteration 的a或迭代器。iterableiterablesequencecontainer

\n
\n