Python分割列表list方法使用(平均n等份拆成)

  • Post category:Python

在Python中,我们可以使用列表的切片操作来分割列表。本文将介绍如何使用切片操作将一个列表均分成n等份。

方法一:使用列表切片

使用列表切片是将一个列表平均分成n等份的一种常见方法以下是示例代码:

def split_list(lst, n):
    k, m = divmod(len(lst), n)
    return [lst[i * k + min(i, m):(i + 1) * k + min(i + 1, m)] for i in range(n)]

my_list = [1, 2, 3, 4, 5, 6 7, 8, 9, 10]
my_new_list = split_list(my_list, 3)
print(my_new_list)

在上面的示例代码中,我们定义了一个名为split_list的函数,该函数接受一个列表lst和一个整数n作为参数,并返回一个包含n个子列表的列表,每个列表包含lst中平均分配的元素。在函数中,我们首先使用divmod()函数计算出每个子列表应该包含的元素数量k和余数m。然后,我们使用列表推导式将lst分成n个子列表,每个子列表包含k个元素和一个额外的元素(如果有余数)。最后,我们将所有子列表存储在变量my_new_list中,并打印其内容。

示例1:使用列表切片方法将列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]平均分成3等份

def split_list(lst, n):
    k, m = divmod(len(lst), n)
    return [lst[i * k + min(i, m):(i + 1) * k + min(i + 1, m)] for i in range(n)]

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
my_new_list = split_list(my_list, 3)
print(my_new_list)

在上面的示例代码中,我们使用列表切片方法将列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]平均分成3等份。我们将列表和3作为参数传递给split_list函数,然后将所有子列表存储在变量my_new_list中,并打印其内容。输出结果为:

[[1, 2, 3, 4], [5, 6, 7], [8, 9, 10]]

示例2:使用列表切片方法将列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]平均分成4等份

def split_list(lst, n):
    k, m = divmod(len(lst), n)
    return [lst[i * k + min(i, m):(i + 1) * k + min(i + 1, m)] for i in range(n)]

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
my_new_list = split_list(my_list, 4)
print(my_new_list)

在上面的示例代码中,我们使用列表切片方法将列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]平均分成4等份。我们将列表和4作为参数传递给split_list函数,然后将所有子列表存储在变量my_new_list中,并打印其内容。输出结果为:

[[1, 2, 3], [4, 5, 6], [7, 8], [9, 10]]

方法二:使用numpy库

使用numpy库也可以将一个列表平均分成n等份。以下是示例代码:

import numpy as np

def split_list(lst, n):
    return np.array_split(lst, n)

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
my_new_list = split_list(my_list, 3)
print(my_new_list)

在上面的示例代码中,我们首先导入numpy库,并定义了一个名为split_list的函数,该函数接受一个列表lst和一个整数n作为参数,并返回一个包含n个子列表的列表,每个子列表包含lst中平均分配的元素。在函数中,我们使用numpy库的array_split()函数将lst分成n个子列表,每个子列表包含lst中平均分配的元素。最后,我们将所有子列表存储在变量my_new_list中,并打印其内容。

示例3:使用numpy库方法将列表[1, 2, 3, 4, 5, 6, 7, 8, 9 10]平均分成3等份

import numpy as np

def split_list(lst, n):
    return np.array_split(lst, n)

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
my_new_list = split_list(my_list, 3)
print(my_new_list)

在上面的示例代码中,我们使用numpy库方法将列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]平均分成3等份。我们将列表和3作为参数传递给split_list函数,然后将所有子列表存储在变量my_new_list中,并打印其内容。输出结果为:

[array([1, 2, 3, 4]), array([5, 6, 7]), array([ 8,  9, 10])]

示例4:使用numpy库方法将列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]平均分成4等份

import numpy as np

def split_list(lst, n):
    return np.array_split(lst, n)

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
my_new_list = split_list(my_list, 4)
print(my_new_list)

在上面的示例代码中,我们使用numpy库方法将列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]平均分成4等份。我们将列表和4作参数传递给split_list函数,然后将所有子列表存储在变量my_new_list中,并打印其内容。输出结果为:

[array([1, 2, 3]), array([4, 5, 6]), array([7, 8]), array([ 9, 10])]

总结

本文介绍了Python分割列表list方法使用(平均n等份拆成)的两种常见方法,包括使用列表切片和使用numpy库。使用列表切片方法需要使用divmod()函数计算每个子列表应该包含的元素数量,然后使用列表推导式将列表分成n个子列表。使用numpy库方法则更加简单,只需要使用array_split()函数将列表分成n个子列表即可。具体哪种方法取决于个人偏好和具体情况。