为了账号安全,请及时绑定邮箱和手机立即绑定

如何从列表列表中删除包含重复值的列表:

如何从列表列表中删除包含重复值的列表:

阿晨1998 2021-12-21 16:46:50
我需要从此列表中删除“重复项”:[[4, 1], [1, 4], [0, 5], [5, 0]]例如:[4, 1] [1, 4]是同一个对象,我需要删除其中一个。如何在不使用列表理解工具的情况下做到这一点?
查看完整描述

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]]


查看完整回答
反对 回复 2021-12-21
?
守着一只汪

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]]


查看完整回答
反对 回复 2021-12-21
?
梵蒂冈之花

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]]

祝你好运。


查看完整回答
反对 回复 2021-12-21
  • 3 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信