在 Python 中将列表分成两半

Python 中将列表分成两半:

  1. 使用列表切片并将停止索引设置为列表的长度 floor 除以 2 以获得前半部分。
  2. 使用列表切片并将起始索引设置为列表的长度 floor 除以 2 以获得后半部分。
my_list = [2, 4, 6, 8]

first_half = my_list[:len(my_list)//2]
print(first_half)  # 👉️ [2, 4]

second_half = my_list[len(my_list)//2:]
print(second_half)  # 👉️ [6, 8]

len() 函数返回对象的长度(项目数)。

my_list = [2, 4, 6, 8]

print(len(my_list))  # 👉️ 4

为了获得列表的前半部分,我们使用了列表切片并将停止索引设置为列表的长度 floor 除以 2。

列表切片的语法是 my_list[start:stop:step]

start 索引是包含的,stop 索引是排他的(直到,但不包括)。

my_list = [2, 4, 6, 8]

first_half = my_list[:len(my_list)//2]
print(first_half)  # 👉️ [2, 4]

我们使用 floor 除法从除法中得到一个整数结果。

整数除法 / 产生一个浮点数,而整数除法 // 产生一个整数。

使用 floor 除法运算符的结果是对结果应用 floor() 函数的数学除法。

my_num = 50

print(my_num / 5)  # 👉️ 10.0 (float)
print(my_num // 5)  # 👉️ 10 (int)

列表的长度除以 2 等于 2,因此第一个切片选择前 2 个元素。

my_list = [2, 4, 6, 8]

first_half = my_list[:len(my_list)//2]
print(first_half)  # 👉️ [2, 4]

second_half = my_list[len(my_list)//2:]
print(second_half)  # 👉️ [6, 8]

stop 索引是不包含的(直到但不包括),因此第一个切片从索引 0 开始并上升到但不包括索引 2。

下半部分从索引 2 开始,一直到列表的末尾。

如果我们必须经常这样做,请将逻辑提取到可重用的函数中。

def split_in_half(l):
    length = len(l)

    return (
        l[:length//2],
        l[length//2:]
    )


my_list = [2, 4, 6, 8]

first, second = split_in_half(my_list)

print(first)  # 👉️ [2, 4]
print(second)  # 👉️ [6, 8]

该函数接受一个列表,将其分成两半并返回包含两半的元组。

将列表分成两半的另一种方法是在切片列表时使用步长值。

my_list = [2, 4, 6, 8]

first_half = my_list[::2]
print(first_half)  # 👉️ [2, 6]

second_half = my_list[1::2]
print(second_half)  # 👉️ [4, 8]

切片 my_list[::2] 从索引 0 开始,每隔一个选择列表中的一项。

切片 my_list[1::2] 从索引 1 开始,每隔一个选择列表中的一项。