首页 > 解决方案 > 正确格式的列表元素的长度

问题描述

假设我有以下列表:

l=[[["a", "b", "c", "k"], ["a", "b", "c", "s", "u"], ["a", "b", "f", "t"], ["a", "b", "e", "l", "n", "o"]],[["a", "b", "d", "n", "o"], ["a","b", "d", "e", "n", "o"]]]

我想遍历每个元素并找到执行以下操作的长度:

s=[]
for i in l:
    for j in i:
        s.append(len(j))

这给了我正确的长度如下:

[4, 5, 4, 6, 5, 6]

但是l它本身的长度为 2,所以我希望我的输出如下所示:

[[4, 5, 4, 6],[5, 6]]

我想知道为什么会发生这种扁平化?

标签: pythonlist

解决方案


您可以使用嵌套列表推导来保留嵌套结构:

[[len(j) for j in i] for i in l]
#[[4, 5, 4, 6], [5, 6]]

如果您更喜欢 for 循环,您可以事先初始化嵌套列表,同时考虑 的长度l,并使用enumeratetoappend每个子列表:

s = [[] for i in range(len(l))]
for ix, i in enumerate(l):
    for j in i:
        s[ix].append(len(j))

推荐阅读