不清楚为什么大小在结果拆分列表中为1

时间:2017-02-02 00:14:37

标签: python

我正在尝试为更大的文件编写脚本。为了检查特定错误,我写了这个:

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?只是想在这里理解这个错误。

2 个答案:

答案 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与自身进行比较......