python - 如何检查列表中的项目是否可以作为另一个列表中的项目找到
问题描述
我的问题是我想检查此列表中的项目是否
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 = []的列表中,否则它应该将它附加到另一个列表中,不正确的响应 = []
以下是我针对上述问题的代码。已经导入文件并使用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()
现在我得到的错误是列表超出索引,所以我想知道如何通过将它们与元素列表进行比较来在列表中附加正确的项目
解决方案
集合更适合处理这个问题:
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(或&)又名:两个集合中都有哪些元素?
区别:set.difference(或-)又名:哪些元素仅在第一组中?
推荐阅读
- reactjs - npm 更新失败,并且在运行 create-react-app 后,一些文件(例如 public、App.js index.js 等)没有安装
- scala - 为什么 T 是扩展类型指示符 C.this.type#T 中 this.type 的类型投影
- reactjs - 在 ReactJs 组件中处理状态的最佳实践是什么
- r - 使用另一个时间序列的增长率插值时间序列(替换 NA)
- perl - sed/awk 有条件地从文件的开头和结尾删除行
- javascript - 无法获取 Angular 材质自动完成值
- reactjs - 如何在jsx反应中访问数组中的数组第一个元素?
- c++ - 弦乐基础
- c# - 我需要自己在 xamarin.forms 中清理内存吗?
- php - Laravel 过滤嵌套关系