Py学习  »  Python

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

Enfield li • 3 年前 • 1230 次点击  

我是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]

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128246
 
1230 次点击  
文章 [ 4 ]  |  最新文章 3 年前
Emi OB
Reply   •   1 楼
Emi OB    3 年前

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

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]
Cory Kramer
Reply   •   2 楼
Cory Kramer    3 年前

你可以用 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]
Prakash Dahal
Reply   •   3 楼
Prakash Dahal    3 年前

使用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]
Ross Carter
Reply   •   4 楼
Ross Carter    3 年前

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

c = [A if len(A)>len(B) else B for A,B in zip(a,b)]

d = [len(A) for A in c]