代码之家  ›  专栏  ›  技术社区  ›  Enfield Li

在python中,如何比较两个独立列表中每个元素的长度?[闭门]

  •  0
  • Enfield Li  · 技术社区  · 4 年前

    我是python的初学者,我遇到了这个问题,但我无法理解:

    我有两个清单:

    a = ["AAAA", "BB", "CCC", "DDDDD"]
    
    b = ["E", "FFF", "GGGG", "HH"]
    

    这两个列表是用户输入的,每个元素的编号或长度未知。

    我想比较每个对应索引位置的长度,并以列表或字符串的形式返回长度结果。

    比如说, len(a[0]) > len(b[0]) len(a[1]) < len(b[1]) ,以此类推,取长的,然后返回如下结果:

    c = ["AAAA", "FFF", "GGGG", "DDDDD"]
    

    根据每个元素的长度,返回一个列表:

    d = [4, 3, 4, 5]
    

    我为此挣扎了好几天。请帮忙!非常感谢!!!

    4 回复  |  直到 4 年前
        1
  •  1
  •   Ross Carter    4 年前

    您可以使用列表理解分为两行:

    c = [A if len(A)>len(B) else B for A,B in zip(a,b)]
    
    d = [len(A) for A in c]
    
        2
  •  0
  •   Prakash Dahal    4 年前

    使用zip()并行迭代两个或多个列表

    a = ["AAAA", "BB", "CCC", "DDDDD"]
    
    b = ["E", "FFF", "GGGG", "HH"]
    
    c = []
    
    for a1,b1 in zip(a,b):
      if len(a1) >= len(b1):
        c.append(a1)
      else:
        c.append(b1)
    
    d = [len(x) for x in c]
    

    输出:

    c = ['AAAA', 'FFF', 'GGGG', 'DDDDD']]
    d = [4,3,4,5]
    
        3
  •  0
  •   Cory Kramer    4 年前

    你可以用 max 在一个列表中 len 作为 key 比较器的论据。然后得到一个长度列表,它只是调用 伦恩 在前面列表中的每个元素上。

    >>> a = ["AAAA", "BB", "CCC", "DDDDD"]
    >>> b = ["E", "FFF", "GGGG", "HH"]
    >>> c = [max(i, key=len) for i in zip(a,b)]
    >>> c
    ['AAAA', 'FFF', 'GGGG', 'DDDDD']
    >>> d = [len(i) for i in c]
    >>> d
    [4, 3, 4, 5]
    
        4
  •  0
  •   Emi OB    4 年前

    要返回最长元素的列表,请执行以下操作:

    c = [a[i] if len(a[i]) > len(b[i]) else b[i] for i in range(len(b))]
    ['AAAA', 'FFF', 'GGGG', 'DDDDD']
    

    对于每个索引的最大长度,下面返回所需列表:

    d = [max(len(a[i]), len(b[i])) for i in range(len(b))]
    [4, 3, 4, 5]