我正在尝试为更大的文件编写脚本。为了检查特定错误,我写了这个:
actual= raw_input(" Enter actual array")
expected = raw_input("Enter expected array")
act = str(actual)
actArr = act.split()
expec = str(expected)
actArr = expec.split()
print(set(actArr).intersection(actArr))
X = (set(actArr).intersection(actArr))
print("%d", len(X))
为什么len(X)
总是返回1?只是想在这里理解这个错误。
答案 0 :(得分:0)
围绕设置调用的括号使 X 结果成为具有单个元素的元组:您刚刚构建的集合。删除括号。
将来打印出相关项目,以便您可以看到自己正在处理的问题。
X = set(actArr).intersection(actArr)
另外,请注意,您将一组与一个列表相交(Python没有内置"数组"类型)。您对此操作有何期待?请注意,您将一组与其元素相同的列表相交。我想你想要两个不同的项目,不是吗?
我怀疑你的输入只有一个元素。 拆分默认为空格作为分隔符。您的评论显示逗号,表示您需要
actArr = actual.split(',')
expArr = expected.split(',')
X = set(actArr).intersection(set(expArr))
顺便说一下,你不必格式化每一个印刷品。你可以只用做得好
print len(X) # Python 2.*; Python 3.* requires the outer parentheses.
答案 1 :(得分:0)
问题是,如果不使用空格作为分隔符输入数组,则不使用拆分调用创建字符串列表,但保留一个字符串。
使用
actArr = act.split(',')
和
expecArr = expec.split(',')
如果您输入'5,6,7,9'
。
另请注意,您正在将actArr与自身进行比较......