请考虑以下元组列表。
['href']
在此列表中,我拥有与href
和x = [[(1, 31), (3, 22), (29, 23), (31, 1)], [(32, 0), (34, 44), None, (44, 34)]]
类似的值。因此,我需要从(1,31)
创建一个仅包含唯一值的列表。如何做到这一点?天真地,我尝试通过基于以下条件从(31,1)
创建一个新列表来解决此问题:如果元组中的第一个值大于第二个,则不要将该值添加到列表中,否则请添加该值。但是,可以看出x
不满足此条件,但所有其他值都满足。
Edit1:所需的输出应采用以下格式。每个子列表必须仅包含上述条件定义的唯一值:
x
答案 0 :(得分:1)
您可以像这样使用列表理解(假设您希望将逻辑应用于列表的每个子列表):
ordered_x = [[tuple(sorted(y)) if isinstance(y,tuple) else y for y in sublist] for sublist in x]
new_x = [list(set(sublist)) for sublist in ordered_x]
print(new_x)
>>> [[(23, 29), (3, 22), (1, 31)], [(0, 32), None, (34, 44)]]
如果您希望从所有子列表的元素集合中删除所有重复项,请使用以下方法:
ordered_x = [tuple(sorted(y)) if isinstance(y,tuple) else y for sublist in x for y in sublist]
new_x = list(set(ordered_x))
print(new_x)
>>> [(0, 32), (3, 22), (23, 29), None, (34, 44), (1, 31)]