我的问题是我要检查此列表中的项目
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()
现在我得到的错误是列表不在索引中,因此我想知道如何通过将正确的项目与元素列表
进行比较来在列表中附加正确的项目答案 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)