gpt4 book ai didi

python - 在 Python 中查找列表的大小/内部结构

转载 作者:太空狗 更新时间:2023-10-30 02:37:14 26 4
gpt4 key购买 nike

如果我有一个像这样的列表c:

a = [1,2,3,4]
c = [a,a]

发现它是一个长度为 2 且每个元素都是长度为 4 的列表的最简单方法是什么?如果我执行 len(c) 我会得到 2 但它不会给出任何迹象表明这些元素是列表或它们的大小,除非我明确地做类似的事情

print(type(c[0]))
print(len(c[0]))
print(len(c[1]))

我可以做类似的事情

import numpy as np
np.asarray(c).shape

它给了我 (2,4),但这只有在内部列表大小相等时才有效。如果相反,列表就像

a = [1,2,3,4]
b = [1,2]
d = [a,b]

然后 np.asarray(d).shape 就给我 (2,)。在这种情况下,我可以做类似的事情

import pandas as pd
df = pd.DataFrame(d)
df.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 4 columns):
0 2 non-null int64
1 2 non-null int64
2 1 non-null float64
3 1 non-null float64
dtypes: float64(2), int64(2)
memory usage: 144.0 bytes

由此,我可以看出原始列表中有列表,但我希望能够在不使用 pandas 的情况下看到它。查看列表内部结构的最佳方式是什么?

最佳答案

根据您期望的输出格式,您可以编写一个递归函数来返回长度和形状的嵌套元组。

代码

def shape(lst):
length = len(lst)
shp = tuple(shape(sub) if isinstance(sub, list) else 0 for sub in lst)
if any(x != 0 for x in shp):
return length, shp
else:
return length

例子

lst = [[1, 2, 3, 4], [1, 2, 3, 4]]
print(shape(lst)) # (2, (4, 4))

lst = [1, [1, 2]]
print(shape(lst)) # (2, (0, 2))

lst = [1, [1, [1]]]
print(shape(lst)) # (2, (0, (2, (0, 1))))

关于python - 在 Python 中查找列表的大小/内部结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50799202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com