【问题标题】:how to check if items in a list can be found as an item in another list如何检查列表中的项目是否可以作为另一个列表中的项目找到
【发布时间】:2019-03-02 08:05:09
【问题描述】:

我的问题是我想检查此列表中的 items 是否

input_list = ['Calcium','Gold','Lithium','Boron','Carbon']` 

可以在这个列表中找到

 elements =  ['Hydrogen','Helium','Lithium','Beryllium','Boron','Carbon','Nitrogen',
              'Oxygen','Fluorine','Neon','Sodium', 'Magnesium','Aluminum','Silicon',
              'Phosphorus','Sulfur','Chlorine','Argon', 'Potassium', 'Calcium']

如果是这样,则 input_list 中的项目会在 元素列表 中找到 那么它应该将该项目附加到另一个名为 correct_response = [] 的列表中,否则它应该将它附加到另一个列表 incorrect_response = []

以下是我针对上述问题的代码。 已经导入文件并使用 readline() 方法一次获取在线字符串。

elements1_file = open('elements1_20.txt','r')
counter = 0
while elements_text:
      for ele in elements_text:
          if ele.lower() in input_list[counter]:
             correct_response.append(input_list[counter])
          else:
               incorrect_response.append(input_list[counter])
      counter += 1
elements_text = elements1_file.readline().strip()

现在我得到的错误是 list out of index,所以我想知道如何通过将它们与 elements list

进行比较来在列表中附加正确的项目

【问题讨论】:

    标签: python python-3.x list for-loop append


    【解决方案1】:

    sets 更适合处理这个问题:

    input_set = set( ['Calcium','Gold','Lithium','Boron','Carbon'] )
    
    elements =  set(['Hydrogen','Helium','Lithium','Beryllium','Boron','Carbon','Nitrogen',
                     'Oxygen','Fluorine','Neon','Sodium', 'Magnesium','Aluminum','Silicon',
                     'Phosphorus','Sulfur','Chlorine','Argon', 'Potassium', 'Calcium'])
    
    correct = list(input_set & elements) 
    incorrect = list(input_set - elements)
    
    print(correct)
    print(incorrect)
    

    输出:

    ['Boron', 'Lithium', 'Calcium', 'Carbon']
    ['Gold']
    

    交集:set.intersection (or &) aka:两个集合中都有哪些元素?

    差异:set.difference (or -) aka:哪些元素仅在第一组中?

    【讨论】:

      【解决方案2】:

      一个简单的for循环O(n)来完成循环

      correct_response=list()
      incorrect_response=list()
      
      for i in input_list:
        if i in elements:
         correct.append(i)
        else:
         incorrect.append(i)
      

      【讨论】:

        猜你喜欢
        • 2022-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-12
        相关资源
        最近更新 更多