【问题标题】:How do I find what is common between 2 lists? [duplicate]如何找到 2 个列表之间的共同点? [复制]
【发布时间】:2015-12-15 15:24:21
【问题描述】:

我有 2 个很长的化学物质清单(每个清单大约 100 种化学物质),我想找出两个清单中常见的化学物质。我基本上需要一个程序,它可以让我插入 2 个长列表,然后打印出常见的化学物质。我目前只知道 java-script 和 python,如果不检查 2 个列表中至少 1 个中的每种化学物质,我不确定如何做到这一点。

【问题讨论】:

  • 你已经尝试了什么?
  • 我在脚本中插入了一个列表,然后从另一个列表中输入化学物质,看看我输入的化学物质是否在脚本中的列表中。
  • 您应该发布您尝试过的不要求代码的内容

标签: javascript python


【解决方案1】:

您可以尝试使用 underscore.js 在 JavaScript 中进行各种操作。
_.difference : 从数组中返回其他数组中不存在的值。

_.difference([1, 2, 3, 4, 5], [5, 2, 10]);
=> [1, 3, 4]

你可以在python中试试

list(set([1, 2, 3, 4, 5]) - set([5, 2, 10]))
=> [1, 3, 4]

【讨论】:

    【解决方案2】:

    在 JS 中你可以使用 filter 来做这样的事情:

    var arr1 = [1, 2, 3, 4, 5];
    var arr2 = [3, 10, 12, 4, 15];
    
    function findCommon(arr1, arr2) {
        return arr1.filter(function (el) {
            return arr2.indexOf(el) > -1;
        });
    }
    
    findCommon(arr1, arr2); // [3, 4]
    

    DEMO

    【讨论】:

      【解决方案3】:

      您可以使用集合来执行此操作。我建议先将每个条目转换为小写,如下所示:

      list_1 = ["Barrelene", "Mimimycin"]
      list_2 = ["Prismane", "barrelene", "Josiphos"]
      
      set_1 = set([x.lower() for x in list_1])
      set_2 = set([x.lower() for x in list_2])
      
      print set_1.intersection(set_2)
      

      这将显示:

      set(['barrelene'])
      

      如果这两个列表在文本文件中,您可以使用以下脚本:

      with open('list_1.txt', 'r') as f_list_1:
          set_1 = set([name.strip().lower() for name in f_list_1])
      
      with open('list_2.txt', 'r') as f_list_2:
          set_2 = set([name.strip().lower() for name in f_list_2])
      
      for name in set_1.intersection(set_2):
          print name
      

      我建议您使用 Microsoft Word 将您的两个文档保存为文本文件。虽然也可以使用 Python 模块直接读取 docx 文件。

      【讨论】:

      • 这是否意味着我必须在每一种化学品周围加上引号?
      • 您的清单在哪里?它们是否在两个文本文件中,即每行一个名称?
      • 在word文档中是这样的。
      • 我添加了一个可以通过文本文件工作的版本。 Word 文件需要另一个库。
      【解决方案4】:

      l1 = [1,2,3,4]

      l2 = [3,2,22]

      commonInBoth = set(l1) & set(l2)

      打印(commonInBoth)

      {2, 3}

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-06
        • 2011-02-21
        • 2014-04-05
        • 2021-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多