CodeGym /课程 /Python SELF ZH /获取子列表

获取子列表

Python SELF ZH
第 7 级 , 课程 3
可用

3.1 索引范围

从列表中获取子列表是一个常见的任务,它通过 切片 (slicing) 来解决。切片允许通过指定起始和结束索引范围以及步长来提取列表中的元素。

使用切片

可以使用语法 list[start:stop:step] 来获取列表的切片,其中:

  • start — 起始元素的索引(包含在内);
  • stop — 结束元素的索引(不包含在内);
  • step — 每次提取元素的步长。

切片语法允许指定你想提取的列表的起始和结束索引。 记住,Python中的索引从零开始,也就是说,第一个元素的索引是0,第三个元素的索引是2。


my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 获取从第三到第七个元素的子列表 
sub_list = my_list[2:7]
print(sub_list)  # [2, 3, 4, 5, 6]
            
# 获取列表中的每隔一个元素
step_list = my_list[0:10:2]
print(step_list)  # [0, 2, 4, 6, 8]

如果 start 未指定,默认从列表头开始,如果 stop 未指定,则到列表尾结束。如果 step 未指定,默认值为1。

例子:


my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 从开头到第三个元素
sub_list = my_list[:3]
print(sub_list)  # [0, 1, 2]
            
# 从第一个元素/索引到列表末尾
step_list = my_list[1:]
print(step_list)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

3.2 负索引

在Python中,负索引提供了一种强大的方式来处理列表,允许从列表的末尾访问元素。在不知道原列表确切长度的情况下,这一点尤其有用。

Python中的负索引从 -1 开始,表示列表的最后一个元素。 -2 表示倒数第二个元素,依此类推。使用负索引可以更轻松地从列表末尾访问元素,而无需计算它们从开始的偏移量。

使用示例

假设你有一个列表:


my_list = ['a', 'b', 'c', 'd', 'e']

如果要获取最后三个元素,可以使用带负索引的切片:


sub_list = my_list[-3:]
print(sub_list)  # 输出 ['c', 'd', 'e']

如果需要从末尾开始获取某些元素之间的子列表,可以结合使用负索引和正索引:


sub_list = my_list[-4:3]
print(sub_list)  # 输出 ['b', 'c']

甚至可以将列表倒过来

使用 step 参数可以创建更复杂的切片,比如以相反顺序提取元素:


sub_list = my_list[::-1]
print(sub_list)  # 输出 ['e', 'd', 'c', 'b', 'a'] 

使用负索引的好处:

  • 简化代码: 从列表末尾访问元素变得直观,不需要额外的计算。
  • 通用性: 这种方法适用于任何列表,无论其大小。
  • 可读性: 代码变得更易读和理解,特别是在需要处理列表的最后几个元素时。

负索引 是Python程序员工具箱中的一个强大工具,让你能有效且简洁地管理子列表,提升代码的可读性和灵活性。

3.3 列表中是否有这个元素?

检查列表中是否存在某个元素在数据流和程序逻辑管理中常常用到。在Python中,这可以通过 in 操作符来实现,如果元素在列表中会返回 True,否则返回 False

使用操作符 in

in 操作符是检查元素是否存在的简单且直观的方法:


my_list = [1, 2, 3, 4, 5]
element = 3
exists = element in my_list
print(exists)  # 输出 True 

条件表达式中的应用

in 操作符常用于条件语句,例如:


my_list = ["apple", "banana", "cherry"] 
element = "apple"
            
if element in my_list:
    print("元素在列表中。")
else:
    print("元素未找到。")

有用哦! 使用 in 搜索元素对小型或中型列表是高效的。然而,对于大数据或频繁的搜索操作而言,可以考虑使用其他数据结构,比如 set,因为它们提供更快速的查找。

评论 (1)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Anonymous #11681054 级别 7,Zurich,Switzerland
13 十月 2025
打卡