社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Enfield li • 3 年前 • 1186 次点击  

我是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
 
1186 次点击  
文章 [ 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]