在数字列表上使用阈值来子集其他对象列表中的相应元素
use threshold on a list of numbers to subset corresponding elements from other list of objects
我有两个共享相同维度的列表列表(长度相同,列表中的每个列表具有相同数量的元素)
list1 看起来像这样:
list1 = [[1,2,3],[2,3,4],[4,5,2],[4,0,9]]
list2 看起来像这样:
list2 = [['a''b','c'],['a','d','e'],['a','f','b'],['p','o','a']]
假设我有一个阈值 x = 3
我想过滤掉列表 2 中与列表 1 中低于 x = 3 的元素具有相同位置的元素
所以例如对于 x = 3 我想获得:
list3 = [[],['e'],['a','f'],['p','a']
我该怎么做?
感谢您的帮助
可以用zip
将两个列表(和子列表)一起走,过滤list2
中满足条件的值在list1
中相应位置:
out = [[j for i, j in zip(li1, li2) if i>3] for li1, li2 in zip(list1, list2)]
输出:
[[], ['e'], ['a', 'f'], ['p', 'a']]
我会使用 Python zip
函数来“合并”两个列表。
list1 = [[1,2,3],[2,3,4],[4,5,2],[4,0,9]]
list2 = [['a','b','c'],['a','d','e'],['a','f','b'],['p','o','a']]
threshold = 3
list3 = [
[char for value, char in zip(sub_one, sub_two) if value > threshold]
for sub_one, sub_two in zip(list1, list2)
]
print(list3)
这输出
[[], ['e'], ['a', 'f'], ['p', 'a']]
外zip
合并list1
和list2
为:
[([1, 2, 3], ['a', 'b', 'c']),
([2, 3, 4], ['a', 'd', 'e']),
([4, 5, 2], ['a', 'f', 'b']),
([4, 0, 9], ['p', 'o', 'a'])]
而内部 zip
合并,例如[1,2,3]
和 ['a','b','c']
变成 [(1, 'a'), (2, 'b'), (3, 'c')]
。然后,内部列表理解可以使用 if value > threshold
.
的简单过滤
我有两个共享相同维度的列表列表(长度相同,列表中的每个列表具有相同数量的元素)
list1 看起来像这样:
list1 = [[1,2,3],[2,3,4],[4,5,2],[4,0,9]]
list2 看起来像这样:
list2 = [['a''b','c'],['a','d','e'],['a','f','b'],['p','o','a']]
假设我有一个阈值 x = 3
我想过滤掉列表 2 中与列表 1 中低于 x = 3 的元素具有相同位置的元素
所以例如对于 x = 3 我想获得:
list3 = [[],['e'],['a','f'],['p','a']
我该怎么做?
感谢您的帮助
可以用zip
将两个列表(和子列表)一起走,过滤list2
中满足条件的值在list1
中相应位置:
out = [[j for i, j in zip(li1, li2) if i>3] for li1, li2 in zip(list1, list2)]
输出:
[[], ['e'], ['a', 'f'], ['p', 'a']]
我会使用 Python zip
函数来“合并”两个列表。
list1 = [[1,2,3],[2,3,4],[4,5,2],[4,0,9]]
list2 = [['a','b','c'],['a','d','e'],['a','f','b'],['p','o','a']]
threshold = 3
list3 = [
[char for value, char in zip(sub_one, sub_two) if value > threshold]
for sub_one, sub_two in zip(list1, list2)
]
print(list3)
这输出
[[], ['e'], ['a', 'f'], ['p', 'a']]
外zip
合并list1
和list2
为:
[([1, 2, 3], ['a', 'b', 'c']),
([2, 3, 4], ['a', 'd', 'e']),
([4, 5, 2], ['a', 'f', 'b']),
([4, 0, 9], ['p', 'o', 'a'])]
而内部 zip
合并,例如[1,2,3]
和 ['a','b','c']
变成 [(1, 'a'), (2, 'b'), (3, 'c')]
。然后,内部列表理解可以使用 if value > threshold
.