list =[('1', '5'), ('3', '5'), ('4', '5'), ('5', '1'), ('5', '3'), ('5', '4')]
上面是一个生成列表,现在我只想写(5,1)(1,5)和(5,1)与其他值相同。
期望的输出
list = [('5', '1'), ('5', '3'), ('5', '4')]
答案 0 :(得分:1)
如果项目的反向不在列表中,或者项目大于反向项目,则将项目添加到新列表中。
newlist = []
for item in oldlist:
rev = item[::-1]
if (not (rev in oldlist)) or (item > rev)
newlist.append(item)
答案 1 :(得分:0)
l = [('1', '5'), ('3', '5'), ('4', '5'), ('5', '1'), ('5', '3'), ('5', '4')]
s=set()
for e in l:
if e[0] >= e[1]:
s.add(e)
else:
s.add((e[1], e[0]))
l = list(s)
注意:它不保留订单。如果这很重要:
s=set(); l2 = []
for e in l:
if e[0] < e[1]:
e = (e[1], e[0])
if not e in s:
s.add(e)
l2.append(e)
答案 2 :(得分:0)
li =[('1', '5'), ('3', '5'), ('4', '5'), ('5', '1'), ('5', '3'), ('5', '4')]
gen = ((a,b) if a>b else (b,a) for a,b in li)
lu = []
[lu.append(y) for y in gen if y not in lu]
print lu
答案 3 :(得分:0)
如果订单不重要,您可以使用list和set功能实现此目的,如下所示:
orig_list =[('1', '5'), ('3', '5'), ('4', '5'), ('5', '1'), ('5', '3'), ('5', '4')]
modified_list = list(set([(t[0], t[1]) if t[0] > t[1] else (t[1], t[0]) for t in orig_list]))
简洁,如果有点密集。
答案 4 :(得分:0)
my_list = [('1', '5'), ('3', '5'), ('4', '5'), ('5', '1'), ('5', '3'), ('5', '4')]
new_list = [(a, b) if (a > b) else (b, a) for a, b in my_list]
result = list(set(new_list))