如何检查一个列表中的项目是否可以作为另一个列表中的项目找到

时间:2018-09-26 13:57:37

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

我的问题是我要检查此列表中的项目

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

如果是这样,则在元素列表中找到输入列表中的一项 然后应将该项目追加到名为 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()

现在我得到的错误是列表不在索引中,因此我想知道如何通过将正确的项目与元素列表

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

2 个答案:

答案 0 :(得分: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 &)又称:两组中都有哪些元素?

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

答案 1 :(得分:0)

一个简单的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)