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