【问题标题】:Attempting to add items from one list to another without duplicates results in empty list尝试将一个列表中的项目添加到另一个列表而不重复导致空列表
【发布时间】:2017-02-04 01:08:19
【问题描述】:

这是我目前的代码:

duplist = [5,9,14,3,9,97,4,3,23,85,123,5]

singlist = []

for i in (duplist) :
    if i != singlist :
        [str(i)] + singlist
        print(singlist)

我正在尝试将 duplist 中的所有项目添加到 singlist 而不添加重复项。我从这段代码得到的结果是一个空列表。我相信错误出现在我的 if 语句行中,尽管我不确定要使用哪个运算符而不是 !=

【问题讨论】:

  • 这里有很多问题,威尔。 i != singlist 将整数与列表对象进行比较。之后,[str(i)] + singlist 会将singliststr(i) 连接起来,但不会保留结果(您不会将其分配到任何地方,对吧?)。对于第一种情况,您正在寻找 in 运算符,而对于第二种情况,您正在寻找列表中的 append 方法。总之,我建议你将浏览器指向docs.python.org/3 并查看教程,它会对你有很大帮助。

标签: python list python-3.x


【解决方案1】:

简而言之,这可以通过获取列表的集合并从中构造一个新列表来完成。集合中的每个项目都是独一无二的。

singlist = [i for i in set(duplist)]

长期方法:

for i in duplist:
    if i not in singlist:
        singlist.append(i)

【讨论】:

    【解决方案2】:

    你可以用这个

    singlist = list(set(duplist))
    

    【讨论】:

    • 虽然这段代码可能会解决问题,但好的答案也应该包含解释。
    【解决方案3】:

    如果您允许使用外部库:

    >>> from iteration_utilities import unique_everseen
    
    >>> duplist = [5,9,14,3,9,97,4,3,23,85,123,5]
    >>> list(unique_everseen(duplist))
    [5, 9, 14, 3, 97, 4, 23, 85, 123]
    

    这是基于itertools documentation 中的配方。因此,您可以轻松地自行实现它。

    【讨论】:

      【解决方案4】:

      我在您的代码中发现了几个问题。

      试试这个:

      duplist = [5,9,14,3,9,97,4,3,23,85,123,5]
      
      singlist = []
      
      for i in (duplist):
          if i  not in singlist:
              singlist.append(i)
              print(singlist)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-18
        • 2013-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-22
        • 2021-03-17
        相关资源
        最近更新 更多