Python入门之列表

1. 列表(List)

列表是Python中最常用的数据结构之一,用于存储有序、可修改的元素集合。它支持多种数据类型的元素,甚至可以嵌套其他列表,灵活性极高。

1.1 列表的创建
列表通过方括号[]定义,元素之间用逗号分隔。

  • 基本创建:可包含单一类型或多种类型的元素
  • 空列表:用[]或list() 函数创建
  • 嵌套列表:列表中可包含其他列表

示例:

#单一类型元素的列表
nums = [1, 2, 3, 4, 5]
print(nums)  #输出:[1, 2, 3, 4, 5]

#多种类型元素的列表
mixed = [1, "hello", 3.14, True]
print(mixed)  #输出:[1, 'hello', 3.14, True]

#空列表
empty_list = []
empty_list2 = list()  #另一种创建空列表的方式
print(empty_list, empty_list2)  #输出:[] []

#嵌套列表(列表中的元素是列表)
nested = [[1, 2], [3, 4], [5, 6]]
print(nested)  #输出:[[1, 2], [3, 4], [5, 6]]

#末尾元素带逗号(语法允许,不影响结果)
fruits = ["apple", "banana", "orange", ]
print(fruits)  #输出:['apple', 'banana', 'orange']

2. 列表的索引与访问

列表中的元素通过索引(index) 访问,索引从0开始(即第一个元素索引为0,第二个为1,以此类推)。

  • 索引超出列表范围会触发IndexError
  • 支持负索引:从末尾开始计数(最后一个元素索引为-1,倒数第二个为-2)
  • 嵌套列表通过多层索引访问内部元素

示例:

nums = [10, 20, 30, 40, 50]

#访问正数索引元素
print(nums[0])  #输出:10(第一个元素)
print(nums[2])  #输出:30(第三个元素)

#访问负索引元素
print(nums[-1])  #输出:50(最后一个元素)
print(nums[-3])  #输出:30(倒数第三个元素)

#访问嵌套列表元素
nested = [[1, 2], [3, 4], [5, 6]]
print(nested[1][0])  #输出:3(访问第二个子列表的第一个元素)

#索引超出范围(报错示例)
# print(nums[10])  #触发 IndexError: list index out of range

3. 列表与字符串的相似性(索引行为)

字符串可以像列表一样通过索引访问单个字符(字符串可视为 “不可修改的字符列表”)。

示例:

s = "hello"
print(s[0])  #输出:h(字符串第一个字符)
print(s[-1])  #输出:o(字符串最后一个字符)

4. 列表的可变性

与字符串不同,列表是可修改的(mutable),可以直接修改指定索引的元素值。
示例:

nums = [1, 2, 3]
nums[1] = 200  #修改索引1的元素
print(nums)  #输出:[1, 200, 3]

# 字符串不可修改(对比示例)
s = "hello"
# s[0] = "H"  #触发 TypeError: 'str' object does not support item assignment

5. 列表的基本操作

5.1 拼接与重复

  • 用 + 拼接两个列表(生成新列表,不修改原列表)
  • 用 * 重复列表元素(生成新列表)

示例:

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

#拼接
c = a + b
print(c)  #输出:[1, 2, 3, 4]

#重复
d = a * 3
print(d)  #输出:[1, 2, 1, 2, 1, 2]

5.2 拼接与重复

成员检查(in / not in)
用in检查元素是否在列表中,not in检查是否不在列表中(同样适用于字符串子串检查)。

示例:

fruits = ["apple", "banana", "orange"]

#检查元素是否在列表中
print("banana" in fruits)  #输出:True
print("grape" in fruits)   #输出:False

#检查元素是否不在列表中
print("grape" not in fruits)  #输出:True

#字符串子串检查(类似逻辑)
s = "hello world"
print("world" in s)  #输出:True

6. 列表切片

通过切片可以快速获取列表的子列表,语法:list[start:end:step](左闭右开,即包含start不包含end)。

  • start:起始索引(默认0)
  • end:结束索引(默认列表长度)
  • step:步长(默认1,可正可负)

示例:

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

#取索引1到4的元素(不包含4)
print(nums[1:4])  # 输出:[1, 2, 3]

#从索引2取到末尾
print(nums[2:])  # 输出:[2, 3, 4, 5, 6, 7, 8, 9]

#从开头取到索引5(不包含5)
print(nums[:5])  # 输出:[0, 1, 2, 3, 4]

#步长为2(隔一个取一个)
print(nums[::2])  # 输出:[0, 2, 4, 6, 8]

#反转列表(步长为-1)
print(nums[::-1])  # 输出:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

7. 列表常用函数与方法

7.1 内置函数

  • len(list):返回列表元素个数
  • max(list):返回列表中最大值(元素需可比较)
  • min(list):返回列表中最小值(元素需可比较)
  • list(iterable):将可迭代对象(如range)转换为列表

示例:

nums = [3, 1, 4, 1, 5, 9]

print(len(nums))  #输出:6(元素个数)
print(max(nums))  #输出:9(最大值)
print(min(nums))  #输出:1(最小值)

7.2 列表方法(list.方法名())

  • append(x):在列表末尾添加元素x
  • insert(i, x):在索引i处插入元素x(原元素后移)
  • index(x):返回元素x第一次出现的索引(x不存在则触发 ValueError)
  • count(x):返回元素x在列表中出现的次数
  • remove(x):删除第一个出现的元素x(x不存在则触发 ValueError)
  • pop(i):删除并返回索引i处的元素(默认删除最后一个)
  • reverse():反转列表(原地修改)
  • sort():对列表排序(原地修改,默认升序)
  • clear():清空列表(删除所有元素)
  • copy():返回列表的浅复制(避免修改原列表影响副本)

示例:

# append:添加元素到末尾
fruits = ["apple", "banana"]
fruits.append("orange")
print(fruits)  #输出:['apple', 'banana', 'orange']

# insert:指定位置插入
fruits.insert(1, "grape")  #在索引1处插入
print(fruits)  #输出:['apple', 'grape', 'banana', 'orange']

# index:查找元素索引
print(fruits.index("banana"))  #输出:2

# count:统计元素出现次数
nums = [1, 2, 2, 3, 2]
print(nums.count(2))  #输出:3

# remove:删除第一个匹配元素
nums.remove(2)
print(nums)  #输出:[1, 2, 3, 2]

# pop:删除并返回元素
x = nums.pop(1)  #删除索引1的元素
print(x, nums)  #输出:2 [1, 3, 2]

# reverse:反转列表
nums.reverse()
print(nums)  #输出:[2, 3, 1]

# sort:排序
nums.sort()  #升序
print(nums)  # 输出:[1, 2, 3]
nums.sort(reverse=True)  # 降序
print(nums)  #输出:[3, 2, 1]

# clear:清空列表
fruits.clear()
print(fruits)  #输出:[]

# copy:复制列表
a = [1, 2, 3]
b = a.copy()  #等价于 b = a[:]
b[0] = 100
print(a)  #输出:[1, 2, 3](原列表不受影响)
print(b)  #输出:[100, 2, 3]

8. 范围(Range)对象

range()用于生成有序整数序列,常与列表结合使用(需用list() 转换为列表)。
8.1 语法结构

语法:range(start, end, step)
start:起始值(默认 0)
end:结束值(不包含,必填)
step:步长(默认 1,可为负数,必须是整数)

示例:

#单参数:range(end) → 0 到 end-1
r1 = range(5)
print(list(r1))  #输出:[0, 1, 2, 3, 4]

#双参数:range(start, end) → start 到 end-1
r2 = range(2, 6)
print(list(r2))  #输出:[2, 3, 4, 5]

#三参数:range(start, end, step) → 按步长递增
r3 = range(1, 10, 2)
print(list(r3))  #输出:[1, 3, 5, 7, 9]

#步长为负(递减)
r4 = range(5, 0, -1)
print(list(r4))  #输出:[5, 4, 3, 2, 1]

#步长非整数(报错示例)
# range(1, 5, 0.5)  #触发 TypeError: 'float' object cannot be interpreted as an integer

原创内容声明

作者 山海
来源平台 山海运维

本文为原创内容,版权归作者所有,未经授权禁止任何形式转载

(0)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注