Python 为什么字符串对象上出现属性错误?

Python 为什么字符串对象上出现属性错误?,python,Python,根据学生所在的教室,我想返回两个值中的一个,并将其分配给变量名“scoremultiplier”,该变量随后将在代码的其他地方使用。但是,我对这一点还是很陌生,在执行代码的第一个场景之后,我遇到了以下错误消息:AttributeError:“str”对象没有属性“isin” import numpy as np pupil = 'Tom' classroom_A = ['Peter', 'Greg', 'Susan', 'Tom', 'John'] classroom_B = ['Stev

根据学生所在的教室,我想返回两个值中的一个,并将其分配给变量名“scoremultiplier”,该变量随后将在代码的其他地方使用。但是,我对这一点还是很陌生,在执行代码的第一个场景之后,我遇到了以下错误消息:
AttributeError:“str”对象没有属性“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()
函数。您应该在中使用关键字
,在列表的情况下,检查列表是否包含给定对象(在其他情况下,它调用对象的
\uuuuuuuu contains\uuu()
函数)。在使用
布尔
而不是按位运算符时,还应该使用Python的二进制运算符(
)。因此,这意味着将代码的这一部分更改为以下内容:

scenario=[A教室的学生和B教室的学生,
教室_B中的学生和不在教室_A中的学生]
检查此代码:

import numpy as np

pupil = 'Tom'

classroom_A = ['Peter', 'Greg', 'Susan', 'Tom', 'John']

classroom_B = ['Steve', 'Joe', 'Jose', 'Pam', 'Paul']

scenario = [pupil in classroom_A and pupil not in classroom_B,
            pupil in classroom_B and pupil not in classroom_A]

result = [3,1]

scoreMultiplier = np.select(scenario , result, default='')

print(scoreMultiplier)

谢谢,看来你已经做到了。但是,我收到一条警告消息:-弃用警告:包含整数的select condlists ndarrays已弃用,将在将来删除。使用
.astype(bool)
转换为bools。这实际上阻止了在我的代码中更深层次的计算中使用变量,我通过将变量转换为浮点来解决这个问题。但是我应该如何更改代码以符合警告消息的建议?仅通过注释很难回答这个问题,我不知道这涉及到哪个变量。当我运行上面的代码时,没有警告消息“……在使用布尔运算符而不是按位运算符时,还应该使用Python的二进制运算符(and、or、not)……”您的解释和修订@Samansi Hymavathi完美地解决了我遇到的最后一个问题。Ace!!!!!!