python - 正确格式的列表元素的长度
问题描述
假设我有以下列表:
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]]
我想知道为什么会发生这种扁平化?
解决方案
您可以使用嵌套列表推导来保留嵌套结构:
[[len(j) for j in i] for i in l]
#[[4, 5, 4, 6], [5, 6]]
如果您更喜欢 for 循环,您可以事先初始化嵌套列表,同时考虑 的长度l
,并使用enumerate
toappend
每个子列表:
s = [[] for i in range(len(l))]
for ix, i in enumerate(l):
for j in i:
s[ix].append(len(j))
推荐阅读
- javascript - 使用 for 循环将 div 的位置更改为向左、向右浮动
- javascript - 角度动画轮播
- tsql - 在 SQL-Prozedure 中设置语言
- model - 图表和模型有什么区别
- html - 从 react web 中的 api 值创建动态卡片视图。我是反应js的新手。如何在基于对象的 React js 中创建动态卡片视图?
- reactjs - 添加新字段后,Prisma Schema 未正确更新
- reactjs - React-router - 成功登录后如何导航到上一个身份验证链接
- angular - mapbox - 在特定位置点添加图像
- reactjs - 是否可以为集合中的相关项目提供相同的 ID?
- html - 如何以图标不与搜索输入重叠的方式将搜索图标添加到搜索栏?