2024-04-26 11:59:58 发布
网友
当给定如下列表:[[5, 2] [2, 5]] 我想把这个列表缩减为:[[5, 2]]或[[2, 5]]
[[5, 2] [2, 5]]
[[5, 2]]
[[2, 5]]
我已经试过了:list(map(list, set(map(frozenset, parts_to_add)))) 但是这个方法的问题是,它将我的列表转换为集合,并且在工作时-它过滤掉所有等价的列表-它还吃掉我的所有重复值;当给定[[3, 3]]时,它返回[[3]],这是由于python中集合的性质。还有别的办法吗? 任何帮助都将不胜感激。你知道吗
list(map(list, set(map(frozenset, parts_to_add))))
[[3, 3]]
[[3]]
更直接的方法是
data = [[2, 5], [5, 2], [3, 6], [2, 5], [6, 3]] result = [] for i in range(len(data)): data[i].sort() if data[i] not in result: result.append(data[i]) In [49]: result Out[49]: [[2, 5], [3, 6]]
你可以做:
data = [[5, 2], [2, 5], [3, 3]] result = set(tuple(e) for e in map(sorted, data)) print([list(e) for e in result])
输出
[[2, 5], [3, 3]]
正如@soon提到的,您可以使用冻结计数器,例如:
from collections import Counter data = [[5, 2], [2, 5], [3, 3]] result = [e for e in {frozenset(Counter(e)): e for e in data}.values()] print(result)
上述方法还使用dict来删除重复项,而不是使用set。你知道吗
dict
set
更直接的方法是
你可以做:
输出
正如@soon提到的,您可以使用冻结计数器,例如:
输出
上述方法还使用
dict
来删除重复项,而不是使用set
。你知道吗相关问题 更多 >
编程相关推荐