在Python中获取列表形状

Muhammad Maisam Abbas 2023年9月19日
  1. 使用len()函数来获取Python中一维列表的形状
  2. 使用列表推导式和len()函数来获取Python中嵌套列表的形状
  3. 使用NumPy获取Python中多维列表的形状
  4. 使用递归获取Python中不规则嵌套列表的形状
  5. 结论
在Python中获取列表形状

在Python中,了解列表的形状对于处理数据结构非常重要,特别是涉及多维或嵌套列表的情况。本文探讨了在Python中确定列表形状的各种方法,从简单的一维列表到复杂的多维或不规则嵌套列表。

使用len()函数来获取Python中一维列表的形状

在Python中获取列表形状的最简单方法是使用len()函数。它提供了列表的长度(元素数量),有效地给出了第一维的大小。

len()函数有简单而简洁的语法:

len(object)

object是您想要确定长度的对象。它可以是一个序列(如列表、元组或字符串)或一个集合(如字典或集合)。

下面的代码示例演示了如何使用len()方法获取Python中列表的形状。

my_list = [1, 2, 3, 4, 5]
length = len(my_list)
print("Length of the list:", length)

输出:

Length of the list: 5

在此示例中,计算了列表my_list的长度,并将其打印到控制台。

使用列表推导式和len()函数来获取Python中嵌套列表的形状

除了确定平坦(1D)列表的长度之外,我们还可以使用len()函数来确定嵌套列表(2D或更高维度列表)的形状。

在下面的示例中,我们确定了2D嵌套列表中的行数和列数。

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
num_rows = len(nested_list)
# Assuming all sublists have the same number of columns
num_cols = len(nested_list[0])
print(f"Number of rows: {num_rows}, Number of columns: {num_cols}")

输出:

Number of rows: 3, Number of columns: 3

这里,num_rows表示行数(子列表数),num_cols表示嵌套列表中每个子列表的列数(元素数)。

使用NumPy获取Python中多维列表的形状

如果我们希望我们的代码能够处理任何多维列表,我们可以使用NumPy的shape属性。它返回一个包含数组的每个维度中元素数量的元组。

NumPy包最初设计用于数组,但也可以与列表一起使用。NumPy是一个外部包,在Python中没有预安装,所以我们需要在使用之前安装它。

安装NumPy包的命令如下。

pip install numpy

以下代码示例展示了如何使用NumPy获取多维列表的形状。

import numpy as np

my_array = np.array([[1, 2, 3], [4, 5, 6]])
num_rows, num_cols = my_array.shape
print(f"Number of rows: {num_rows}, Number of columns: {num_cols}")

输出:

Number of rows: 2, Number of columns: 3

这里,创建了一个NumPy数组my_array,然后使用shape属性检索其形状。该方法适用于多维数组,提供了行数和列数。

使用递归获取Python中不规则嵌套列表的形状

在某些情况下,我们可能会遇到嵌套不规则的列表,其中嵌套的深度不同,并且子列表的长度不同。为了处理这种情况,我们可以使用递归函数。

def get_shape(data):
    if isinstance(data, list):
        return [len(data)] + get_shape(data[0])
    else:
        return []  # Assuming leaf elements are considered as a single column


nested_list = [[1, 2], [3, 4, 5], [6, [7, 8]]]
shape = get_shape(nested_list)
num_rows, num_cols = shape
print(f"Number of rows: {num_rows}, Number of columns: {num_cols}")

输出:

Number of rows: 3, Number of columns: 2

get_shape()函数通过递归地遍历嵌套的列表,在每个维度上计算行数,并假设叶元素视为单列。这种方法可以提供不规则嵌套列表的行数和列数。

结论

获取Python中一维列表形状的最直接方法是使用len()函数。对于嵌套列表,列表推导式以及len()函数可以帮助有效确定行数和列数。

对于涉及多维数组的更高级场景,NumPy的shape属性提供了一种方便的方式来获取行数和列数。最后,当处理具有不同深度和长度的不规则嵌套列表时,可以使用递归函数来准确确定形状。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相关文章 - Python List