列表值比较 - For 循环迭代

List Value Comparison - For loop iteration

我想比较物品的价值。如果它们相等,我想打印 "true",否则我想打印 "false"。我的代码写了结果。

我的结果 "prediction_list" 比较了 2 lists(test_labels and my_labels) 的值,它的大小应该是 260,因为我原来的 lists(test_labels and my_labels) 的大小是 260。但是,我的 prediction_list 由于 for 循环迭代,大小为 67600。我该如何纠正?

prediction = []

for i in test_labels:
    for item in my_labels:
        if item == int(i):
            prediction.append("true")
        else:
            prediction.append("false")

print prediction

示例输入和输出:

测试集中的 NB 分类器标签:[1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

test_labels: ['0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n', '0\n']

预测:['false', 'false', 'false', 'true', 'false', 'false', 'false', 'true', 'false', 'false', 'false', 'false', 'false', 'false', 'false', 'false', 'false', 'false', 'false', 'false', 'false', 'false', 'false', 'false', 'false'...]

与其遍历列表,不如尝试遍历一个范围并使用数字检查每个列表中每个项目在该索引处的值。这是代码:

prediction = []

for i in range(0, len(test_labels)):
    if my_labels[i] == test_labels[i]:
        prediction.append("true")
    else:
        prediction.append("false")

print prediction

如果您确定 test_labels 和 my_labels 大小相同,您可以轻松使用 "zip" 函数:

prediction = []

for x, y in zip(test_labels, my_labels):
    if x == y:
        prediction.append("true")
    else:
        prediction.append("false")

print(prediction)

我同意@MarkPython 的观点,但语法稍微简洁一些。

prediction = []

for i in range(len(test_labels)):
    if test_labels[i] == my_labels[i]:
        prediction.append("true")
    else:
        prediction.append("false")