【问题标题】:I want to simply subtract elements from two lists我想简单地从两个列表中减去元素
【发布时间】:2015-02-14 12:00:23
【问题描述】:

我有两个打开的列表。第一个权重 (fWeight) 和第二个权重 (sWeight)。我想从sWeight 中减去fWeight。我收到此错误:

unsupported operand type(s) for -: 'list' and 'list'.

有一个简单的解决方案吗?

names_array = list()
firstWeight_Array=list()
students = 2
for i in range(students):
    name = str(raw_input("Please enter a  name:"))
    names_array.append(str(name))
    fWeight = int(raw_input("Please enter the first weight:"))
    firstWeight_Array.append(int(fWeight))

SecondWeight_Array=list()
for i in range(students):
        sWeight = int(raw_input("Please enter the Second weight:"))
        SecondWeight_Array.append(int(sWeight))

print(firstWeight_Array,SecondWeight_Array)
print firstWeight_Array - SecondWeight_Array

【问题讨论】:

    标签: python list subtraction


    【解决方案1】:

    如果您需要将一个列表中的每个项目减去相同大小的第二个列表的相应项目,最简单的方法(可能也是最惯用的方法)是使用 list comprehensionzip 函数:

    diff = [first - second 
            for first, second in zip(firstWeight_Array, secondWeight_Array)]
    

    这是一个简单的例子:

    >>> firstWeight_Array = [10,20,30]
    >>> secondWeight_Array = [12,18,34]
    
    >>> diff = [first - second 
    ...         for first, second in zip(firstWeight_Array, secondWeight_Array)]
    
    >>> diff
    [-2, 2, -4]
    

    请注意,出于空间效率的原因,在 Python 2 中,您可能更喜欢使用 itertools.izip 而不是普通的 zip

    【讨论】:

      【解决方案2】:

      没有为list 定义减法运算符,因为它在一般情况下没有意义。但是,您可以使用[] 运算符简单地获取单个项目,并在新的list 中计算差异:

      newArray = list();
      for i in xrange(students):
          newArray.append(firstWeight_Array[i] - secondWeight_Array[i]);
      print newArray;
      

      【讨论】:

      • 谢谢,我收到了错误:ValueError: 0 is not in list
      • 如果是python2,我会使用xrange 而不是range
      【解决方案3】:

      我愿意:

      diffs = [firstWeight_Array[i] - secondWeight_Array[i] for i in xrange(len(students))]
      

      如果您使用 Python 3,请使用 range 而不是 xrange

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-13
        • 1970-01-01
        • 1970-01-01
        • 2021-05-04
        • 2019-01-22
        • 2020-12-05
        • 1970-01-01
        相关资源
        最近更新 更多