【问题标题】:Compare values in two lists, then tally which list was bigger比较两个列表中的值,然后计算哪个列表更大
【发布时间】:2020-10-06 15:27:14
【问题描述】:

这里绝对是初学者,第一个问题发布在这个论坛上

我有两个列表,A 和 B。我需要一一比较它们的值,看看哪个更大。

list_A = [10, 11, 13, 30, 22, 11, 10, 33, 22, 22]
list_B = [23, 66, 12, 43, 12, 10, 44, 23, 12, 17]

在第一对 (10/23) 中,列表 B 更大。然后我想为一个名为 B_bigger 的变量计算 +1,反之亦然,如果 A 列表中的值更大,则为 A 计算 +1。

结果应该是:

A_bigger = 6

B_bigger = 4

非常感谢

【问题讨论】:

标签: python list compare


【解决方案1】:

为此,您需要压缩这些列表。 例如:

A_bigger = 0
B_bigger = 0

for a, b in zip(list_A, list_B):
    if a > b:
        A_bigger += 1
    if b > a:
        B_bigger += 1

【讨论】:

  • 非常感谢!效果很好。非常感谢您的时间。
【解决方案2】:

我们可以尝试使用zip 以及对两个输入列表的列表推导来生成大于/小于的布尔列表。然后,对每个列表求和以生成您想要查看的计数:

A_bigger = sum([i > j for i, j in zip(list_A, list_B)])
B_bigger = len(list_A) - A_bigger
print("A_bigger = " + str(A_bigger))
print("B_bigger = " + str(B_bigger))

打印出来:

A_bigger = 6
B_bigger = 4

数据:

list_A = [10, 11, 13, 30, 22, 11, 10, 33, 22, 22]
list_B = [23, 66, 12, 43, 12, 10, 44, 23, 12, 17]

【讨论】:

    【解决方案3】:

    试试这个:

    a_big = 0
    b_big = 0
    for x,y in zip(list_A,list_B):
      if x > y:
        a_big += 1
      if y > x:
        b_big += 1
    
    print("A_Bigger:",a_big)
    print("B_Bigger:",b_big)
    

    【讨论】:

      【解决方案4】:

      大家已经给出了zip的好版本,所以这里使用numpy

      import numpy as np
      
      list_A = [10, 11, 13, 30, 22, 11, 10, 33, 22, 22]
      list_B = [23, 66, 12, 43, 12, 10, 44, 23, 12, 17]
      
      a = np.array(list_A)
      b = np.array(list_B)
      
      # Find a difference between the two lists
      diff = a - b
      
      # Compare to see how many result in a positive/negative difference
      # anything >0 will be because A is greater, anything <0 is because B is greater
      # anything ==0 is because the values are the same 
      a_greater = sum(diff > 0)  # 6
      b_greater = sum(diff < 0)  # 4
      

      【讨论】:

      • 哇,这绝对超出了我的理解范围,但我会记住的!非常感谢您抽出宝贵时间
      猜你喜欢
      • 2022-11-23
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 2018-03-19
      • 1970-01-01
      相关资源
      最近更新 更多