很容易获得列表len(list)
中的项目数,但是说我有一个矩阵,如:
[[1,2,3],[1,2,3]]
有没有pythonic的方法来返回6?还是我必须迭代。
答案 0 :(得分:1)
您可以使用chain
from itertools import chain
l = [[1,2,3],[1,2,3]]
len(list(chain(*l))) # give you 6
表达式list(chain(*l))
为您提供了简单的清单:[1, 2, 3, 1, 2, 3]
答案 1 :(得分:0)
使矩阵numpy数组像这样
mat = np.array([[1,2,3],[1,2,3]])
像这样制作一维数组
arr = mat.ravel()
打印长度
print(len(arr))
答案 2 :(得分:0)
l = [[1,2,3],[1,2,3]]
len([item for innerlist in l for item in innerlist])
给你6
答案 3 :(得分:0)
你只需要扁平化列表。
Numpy 是最好的选择。
如果需要,您仍然可以使用简单的 if/else
来展平并返回列表的长度。
示例,
list_1 = [1, 2, 3, 'ID45785', False, '', 2.85, [1, 2, 'ID85639', True, 1.8], (e for e in range(589, 591))]
def to_flatten3(my_list, primitives=(bool, str, int, float)):
flatten = []
for item in my_list:
if isinstance(item, primitives):
flatten.append(item)
else:
flatten.extend(item)
return len(flatten)
print(to_flatten3(list_1))
14
[Program finished]