【问题标题】:List Value Comparison - For loop iteration列表值比较 - For 循环迭代
【发布时间】:2016-02-21 14:33:24
【问题描述】:

我想比较项目值。如果它们相等,我想打印“true”,否则我想打印“false”。我的代码写了结果。

我的结果 "prediction_list" 比较 2 lists(test_labels and my_labels) 的值的大小应该是 260,因为我原来的 lists(test_labels and my_labels) 的大小是 260。但是,我的 prediction_list 的大小是 67600,因为for 循环迭代。应该怎么改?

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'...]

【问题讨论】:

    标签: python for-loop matrix vector multiplication


    【解决方案1】:

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

    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
    

    【讨论】:

    • @serenade:你也可以使用列表理解:prediction = ["true" if my_labels[i] == test_labels[i] else "false" for i in range(len(test_labels))
    • 我知道你可以这样做,但我更喜欢长版本的可读性。
    【解决方案2】:

    如果您确定 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)
    

    【讨论】:

      【解决方案3】:

      我同意@MarkPython,但语法更简洁。

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

      【讨论】:

      • 感谢您的简化!
      • 不客气!默认情况下,Python 的范围从零开始,除非另有定义。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      • 2021-10-22
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多