python - 为什么我在字符串对象上收到属性错误?
问题描述
根据学生所在的教室,我想返回两个值之一并将其分配给变量名“scoreMutiplier”,然后稍后在我的代码中的其他地方使用该变量名。但是,我对此仍然很陌生,并且在执行代码的第一个场景之后遇到了以下错误消息:AttributeError: 'str' object has no attribute 'isin'
import numpy as np
pupil = 'Tom'
classroom_A = ['Peter', 'Greg', 'Susan', 'Tom', 'John']
classroom_B = ['Steve', 'Joe', 'Jose', 'Pam', 'Paul']
scenario = [((pupil.isin(classroom_A )) & (~pupil.isin(classroom_B ))),
((pupil.isin(classroom_B )) & (~pupil.isin(classroom_A )))]
result = [3,1]
scoreMultiplier = np.select(scenario , result, default='')
print(scoreMultiplier)
完成这项工作的最佳方法是什么?
提前谢谢了。
解决方案
你有正确的想法,但使用了错误的功能。str
对象没有功能isin()
。您应该使用关键字in
which 在列表的情况下检查列表是否包含给定对象(在其他情况下它调用对象的__contains__()
函数)。在使用而不是按位运算符时,您还应该使用 Python 的二元运算符 ( and
, or
, not
) boolean
。所以这意味着将这部分代码更改为以下内容:
scenario = [pupil in classroom_A and pupil not in classroom_B,
pupil in classroom_B and pupil not in classroom_A]
推荐阅读
- r - 如何对ftable中的列和行进行排序
- python - 重命名列表中的python重复元组
- html - Firefox 开发人员工具中的 html 标签上的随机短语?
- keras - 提前停止的 Keras 训练:当数据分布时它是如何工作的?
- sql - 为什么 Firebird 中最后插入的行没有显示在表格末尾
- java - 如何使用 Java 在输出中保留空格?
- power-automate - Power Automate 创建自定义存储桶 ID 并在其中创建任务
- java - 覆盖 PNG 时的奇怪行为
- hadoop - 是什么导致 Hadoop 服务器(以及一般情况下)中的数据表“损坏”?
- python - ValueError: low >= high in np.random.randint [新类型]