根据父列表将值分组到列表中
Grouping values into lists based on parent list
我有一个列表,我正在尝试将其与其他两个列表中的值的顺序组合进行比较。下面的代码有效,但输出值在一个单一的平面列表中。
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]
我如何组织脚本以便将值拆分为多个列表,以便第一个嵌套列表包含 list1[0]<i<list2[0]
、第二个 list1[1]<i<list2[1]
的所有值,依此类推。 .(通过 list1[n]<i<list2[n]
)?在那种情况下,输出将是:
>>>[[3],[6,7]]
了解 List Comprehension。
您可以在这里使用它:
values = [3,6,7,8]
list1 = [2,5]
list2 = [4,8]
print [[i for i in values if x<i<y] for x,y in zip(list1, list2)]
或者稍微更改一下代码:
main = []
for x,y in zip(list1, list2):
mid = []
for i in values:
if x<i<y:
mid.append(i)
main.append(mid)
print main
两种情况下的输出:
[[3], [6, 7]]
您需要先创建空列表并将数字放入此列表,然后再将其附加到 main
。而且你必须以不同的顺序使用 for
循环。
values = [3,6,7,8]
list1 = [2,5]
list2 = [4,8]
main = []
for x, y in zip(list1, list2):
temp = []
for i in values:
if x<i<y:
temp.append(i)
main.append(temp)
print(main)
您可以使用 List Comprehension with a filter 来做到这一点:
>>> [filter(lambda x: l < x < r, values) for l, r in zip(list1, list2)]
[[3], [6, 7]]
注意 filter(function, iterable)
等同于 [item for item in iterable if function(item)]
所以等价解:
>>> [[item for item in values if l < item < r] for l, r in zip(list1, list2)]
[[3], [6, 7]]
详情:
filter(function, iterable)
Construct a list
from those elements of iterable
for which function returns true. iterable
may be either a sequence
, a container
which supports iteration, or an iterator.
我有一个列表,我正在尝试将其与其他两个列表中的值的顺序组合进行比较。下面的代码有效,但输出值在一个单一的平面列表中。
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]
我如何组织脚本以便将值拆分为多个列表,以便第一个嵌套列表包含 list1[0]<i<list2[0]
、第二个 list1[1]<i<list2[1]
的所有值,依此类推。 .(通过 list1[n]<i<list2[n]
)?在那种情况下,输出将是:
>>>[[3],[6,7]]
了解 List Comprehension。 您可以在这里使用它:
values = [3,6,7,8]
list1 = [2,5]
list2 = [4,8]
print [[i for i in values if x<i<y] for x,y in zip(list1, list2)]
或者稍微更改一下代码:
main = []
for x,y in zip(list1, list2):
mid = []
for i in values:
if x<i<y:
mid.append(i)
main.append(mid)
print main
两种情况下的输出:
[[3], [6, 7]]
您需要先创建空列表并将数字放入此列表,然后再将其附加到 main
。而且你必须以不同的顺序使用 for
循环。
values = [3,6,7,8]
list1 = [2,5]
list2 = [4,8]
main = []
for x, y in zip(list1, list2):
temp = []
for i in values:
if x<i<y:
temp.append(i)
main.append(temp)
print(main)
您可以使用 List Comprehension with a filter 来做到这一点:
>>> [filter(lambda x: l < x < r, values) for l, r in zip(list1, list2)]
[[3], [6, 7]]
注意 filter(function, iterable)
等同于 [item for item in iterable if function(item)]
所以等价解:
>>> [[item for item in values if l < item < r] for l, r in zip(list1, list2)]
[[3], [6, 7]]
详情:
filter(function, iterable)
Construct a
list
from those elements ofiterable
for which function returns true.iterable
may be either asequence
, acontainer
which supports iteration, or an iterator.