如何在python中获取锯齿状数组的长度

时间:2018-06-10 07:08:41

标签: python arrays list

我正在尝试从我的列表中获取从SQLAlchemy命令更新的项目总数,这是一个像这样的锯齿状数组..

list = [['linux'], ['ML'], ['linux', 'ML', 'Data Science', 'GIT'],['linux', 'Data Science', 'GIT'], ['GIT'], ['ML', 'GIT'], ['linux'], ['linux'], ['linux'], ['Data Science']]
length = len(list)

我输出为:10

如何获得长度:16?这是列表中项目的总数吗?

6 个答案:

答案 0 :(得分:3)

使用sum和生成器表达式:

lst = [['linux'], ['ML'], ['linux', 'ML', 'Data Science', 'GIT'],['linux', 'Data Science', 'GIT'], ['GIT'], ['ML', 'GIT'], ['linux'], ['linux'], ['linux'], ['Data Science']]
num_items = sum(len(l) for l in lst)

print(num_items)

答案 1 :(得分:2)

不要使用list,那里已经有了这个名字。我假设你的意思是" lst"。

如果您的列表很小,请使用

>>> len(sum(lst, []))
16

不推荐用于大型列表,因为与sum的列表连接在时间上是二次的。但是,这非常简洁,因此需要重新考虑小投入。

如果您的列表很大(或有许多元素),请使用

>>> sum(len(l) for l in lst)
16

答案 2 :(得分:0)

totalLen = 0 for inner in list: totalLen = totalLen + len(inner) 如果你想深入到一个以上的水平,我建议你写一个类似的递归函数。

答案 3 :(得分:0)

如果您打算使用len()

,请先考虑展开列表
>>> my_list = [['linux'], ['ML'], ['linux', 'ML', 'Data Science', 'GIT'],['linux', 'Data Science', 'GIT'], ['GIT'], ['ML', 'GIT'], ['linux'], ['linux'], ['linux'], ['Data Science']]
>>> len([item for sublist in my_list for item in sublist])
16

答案 4 :(得分:0)

我的代码遍历嵌套列表,并获取列表中每个嵌套列表的len。然后,我只是总结'存储'并提供所需的输出。这是我的代码:

list_1 = [['linux'], ['ML'], ['linux', 'ML', 'Data Science', 'GIT'],['linux', 'Data Science', 'GIT'], ['GIT'], ['ML', 'GIT'], ['linux'], ['linux'], ['linux'], ['Data Science']]
store = [len(x) for x in list_1]
print(sum(store))

答案 5 :(得分:0)

如果你有一个真正的“锯齿状”或完全随机嵌套的列表,你可以使用类似下面的递归函数:

>>> a = [1, [1, 3, 4], [[0, 5], 2, 3]]
>>> len_rec = lambda l: sum(len_rec(i) for i in l) if isinstance(l,list) else 1
>>> len_rec(a)
8