我知道列表与列表还有其他线程,但它们似乎无法解决我的问题。我试图针对一个特定列表测试一系列列表,并检查它们的相似程度。例如,
"答案键"如下:
answerkey = "B,A,D,D,C,B,D,A,C,C,D,B,A,B,A,C,B,D,A,C,A,A,B,D,D"
lanswerkey = list[answerkey]
我试图测试我导入的一系列其他列表,其格式为:
N00000023,,A,D,D,C,B,D,A,C,C,,C,,B,A,C,B,D,A,C,A,A
N00000024,C,C,D,D,C,B,,A,C,C,D,B,A,B,,C,B,D,A,C,A,B,B,,D
我可以这样做吗?:
right = 0
counter3 = 0
for line in f:
if lanswerkey.split(",")[counter3] == line.split(",")[counter3]:
right += 4
if lanswerkey.split(",")[counter3] != line.split(",")[counter3]:
right -= 1
counter3 += 1
任何帮助将不胜感激!
答案 0 :(得分:2)
在numpy中,您可以轻松地将两个数组与符号==
进行比较,唯一的问题是您需要两个长度相同的数组,您可以通过设置自己的规则轻松处理此问题。在您的情况下,answerkey
有25个元素而line1
只有22个元素,因此您无法与它们进行比较,请自行设置规则。
import numpy as np
answerkey = "B,A,D,D,C,B,D,A,C,C,D,B,A,B,A,C,B,D,A,C,A,A,B,D,D"
line1 = "N00000023,,A,D,D,C,B,D,A,C,C,,C,,B,A,C,B,D,A,C,A,A"
line2 = "N00000024,C,C,D,D,C,B,,A,C,C,D,B,A,B,,C,B,D,A,C,A,B,B,,D"
# convert your lists to numpy array
answer = np.array(list(answerkey.split(",")))
q1 = np.array(list(line1.split(","))[1:]) # [1:] just to get rid of the "N00000023"
q2 = np.array(list(line2.split(","))[1:])
# print your array length to check whether they are comparable
print len(answer), len(q1), len(q2)
>> 25 22 25
# get your result array
res = answer == q2
>> [False False True True True True False True
True True True True True True False True True
True True True True False True False True]
# calculate your score
score = sum(res)*4 - (len(res)-sum(res))
print score
>> 70
答案 1 :(得分:1)
如果你有
answerkey = "B,A,D,D,C,B,D,A,C,C,D,B,A,B,A,C,B,D,A,C,A,A,B,D,D"
answer = "N00000024,B,B,D,D,C,A,D,A,C,D,D,B,A,B,A,C,B,D,A,C,A,A,B,D,D"
# different ^ ^ ^
你可以得到这样的不同职位的数量:
len([x for x in zip(answerkey.split(","), answer.split(",")[1:]) if x[0] != x[1]])
# result 3
答案 2 :(得分:0)
首先,从答案键获取答案列表。
>>> answerkey = answerkey.split(",")
['B', 'A', 'D', 'D', 'C', 'B', 'D', 'A', 'C', 'C', 'D', 'B', 'A', 'B',
'A', 'C', 'B', 'D', 'A', 'C', 'A', 'A', 'B', 'D', 'D']
然后阅读答案:
>>> answer = raw_input().split(",")[1:]
N00000023,,A,D,D,C,B,D,A,C,C,,C,,B,A,C,B,D,A,C,A,A
['', 'A', 'D', 'D', 'C', 'B', 'D', 'A', 'C', 'C', '', 'C', '', 'B', 'A', 'C', 'B', 'D', 'A', 'C', 'A', 'A']
最后,比较答案:
for i in range(len(answerkey)):
if answerkey[i] == answer[i]:
right += 4
else
right -= 1
如果你不想使用for循环,你可以看看 numpy 库,它提供了元素明智比较的功能。 http://docs.scipy.org/doc/numpy/reference/generated/numpy.equal.html#numpy.equal