3 回答
TA贡献1844条经验 获得超8个赞
根据评论,您不想使用list comprehension,sort并且子列表中始终有 2 个元素,那么以下方法会有所帮助,
它遍历列表并反转子列表并检查它们是否存在于 new_list
x = [[4, 1], [1, 4], [0, 5], [5, 0]]
new_list = []
for i in x:
if i[::-1] not in new_list and i not in new_list:
new_list.append(i)
print(new_list)
输出:
[[4, 1], [0, 5]]
TA贡献1872条经验 获得超3个赞
一种方法是对它进行排序,如果最终列表中不存在,则像 LogicalBranch 在答案中提到的那样进行追加。
你提到你不能使用sort并且2列表中总是有元素。然后,您可以通过制作另一个与列表相反的列表并在最终答案中进行比较来做一个简单的技巧。看下面的代码
ans = []
l = [[4, 1], [1, 4], [0, 5], [5, 0]]
for x in l:
a = x[::-1]
if x not in ans and a not in ans:
ans.append(x)
print(ans) # [[4, 1], [0, 5]]
TA贡献1900条经验 获得超5个赞
实现此目的的最简单方法(不导入任何内容)是在将列表中的每一对添加到新结果列表之前对其进行排序,如下所示:
result = []
for pair in [[4, 1], [1, 4], [0, 5], [5, 0]]:
pair.sort()
if pair not in result:
result.append(pair)
print(result)
您甚至可以将其转换为函数:
def list_filter(collection):
result = []
for pair in collection:
pair.sort()
if pair not in result:
result.append(pair)
return result
然后你会像这样使用它:
list_filter([[4, 1], [1, 4], [0, 5], [5, 0]])
这应该返回一个如下所示的列表:
[[1, 4], [0, 5]]
编辑:没有排序的更新方法:
(result, collection) = ([], [[4, 1], [1, 4], [0, 5], [5, 0]])
def check(n1, n2):
for pair in collection:
if n1 in pair and n2 in pair and sorted(pair) in collection:
return True
return False
for pair in collection:
pair.sort()
if pair not in result:
result.append(pair)
print(result)
您甚至可以将其转换为函数:
def new_filter_function(collection):
result = []
def check(n1, n2):
for pair in collection:
if n1 in pair and n2 in pair and ([n1, n2] in collection or [n2, n1] in collection):
return True
return False
for pair in collection:
if pair not in result:
result.append(pair)
return result
然后你会像这样使用它:
new_filter_function([[4, 1], [1, 4], [0, 5], [5, 0]])
它还应该返回一个如下所示的列表:
[[1, 4], [0, 5]]
祝你好运。
添加回答
举报