我正在尝试从我的列表中获取从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?这是列表中项目的总数吗?
答案 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