跳至内容

Python 列表

在Python中,列表用于存储一组数据。

比如,我们需要记录5个学生的成绩,这里就可以使用列表,而不是创建5个单独的变量。

list

创建列表

Python中,将元素放入中括号[]中,逗号分隔 , 的方式创建列表。

例如

python
grades = [95, 86, 91, 77, 82]
print(grades)


# 输出:
# [95, 86, 91, 77, 82]
grades = [95, 86, 91, 77, 82]
print(grades)


# 输出:
# [95, 86, 91, 77, 82]

提示

  • 列表可以存储不同类型的元素,比如整型、浮点型或者字符串等
  • 列表可以存储重复的元素
  • 除了上面创建列表的方式外,还可以通过 list() 构造器来创建列表

访问列表元素

Python中,列表是按序存储,每个元素都关联一个序号,这个序号就是索引值。

第一个元素的索引是0,第二个是1,依次类推。

list index

例如

python
grades = [95, 86, 91, 77, 82]
print("索引0的元素是:", grades[0])
print("索引2的元素是:", grades[2])

# 输出:
# 索引0的元素是:95
# 索引2的元素是:91
grades = [95, 86, 91, 77, 82]
print("索引0的元素是:", grades[0])
print("索引2的元素是:", grades[2])

# 输出:
# 索引0的元素是:95
# 索引2的元素是:91

Python 负数索引

Python支持负数索引。索引值-1指的是最后一个元素,-2指的是倒数第二个,依此类推。

list neg index

例如

python
grades = [95, 86, 91, 77, 82]
print("索引-1的元素是:", grades[-1])
print("索引-3的元素是:", grades[-3])

# 输出:
# 索引-1的元素是:82
# 索引-3的元素是:91
grades = [95, 86, 91, 77, 82]
print("索引-1的元素是:", grades[-1])
print("索引-3的元素是:", grades[-3])

# 输出:
# 索引-1的元素是:82
# 索引-3的元素是:91

提示

如果指定索引列表中不存在,则会返回 IndexError 异常

列表截取

Python中,可以使用截取操作符:读取列表的部分元素。

例如

python
grades = [95, 86, 91, 77, 82]
# 从索引1到索引3(不包括索引3)
print(grades[1:3])
# 从索引4到结尾
print(grades[3:])
# 从开头到结尾
print(grades[:])


# 输出:
# [86, 91]
# [77, 82]
# [95, 86, 91, 77, 82]
grades = [95, 86, 91, 77, 82]
# 从索引1到索引3(不包括索引3)
print(grades[1:3])
# 从索引4到结尾
print(grades[3:])
# 从开头到结尾
print(grades[:])


# 输出:
# [86, 91]
# [77, 82]
# [95, 86, 91, 77, 82]

提示

当对列表进行截取时 [起始索引:结尾索引] , 截取后列表包含起始索引对应元素,不包含结尾索引对应元素。

列表新增

Python支持三种不同的新增元素方式。

1. 使用 append() 方法

append()方法会在列表的尾部新增元素。

例如

python
nums = [1,2,3]
print("新增前nums:", nums)
# 列表尾部新增元素4
nums.append(4)
print("新增后nums:", nums)


# 输出:
# 新增前nums:[1, 2, 3]
# 新增后nums:[1, 2, 3, 4]
nums = [1,2,3]
print("新增前nums:", nums)
# 列表尾部新增元素4
nums.append(4)
print("新增后nums:", nums)


# 输出:
# 新增前nums:[1, 2, 3]
# 新增后nums:[1, 2, 3, 4]

2. 使用 extend() 方法

extend()方法将 可迭代容器(list, tuple, string, dict) 的所有元素追加到列表的尾部。

例如

python
nums = [1,2,3]
add_nums = [4,5,6]
# 在列表nums后追加列表add_nums
nums.extend(add_nums)
print("nums:", nums)


# 输出:
# nums: [1, 2, 3, 4, 5, 6]
nums = [1,2,3]
add_nums = [4,5,6]
# 在列表nums后追加列表add_nums
nums.extend(add_nums)
print("nums:", nums)


# 输出:
# nums: [1, 2, 3, 4, 5, 6]

3. 使用 insert() 方法

insert()方法会在指定位置新增一个元素

例如

python
nums = [1,2,3]
# 在指定位置新增元素
nums.insert(1, 4)
print("nums:", nums)


# 输出:
# nums: [1, 4, 2, 3]
nums = [1,2,3]
# 在指定位置新增元素
nums.insert(1, 4)
print("nums:", nums)


# 输出:
# nums: [1, 4, 2, 3]

列表修改

Python中,修改列表元素通过赋值操作符 = 完成

例如

python
nums = [1,2,3]
# 修改第二个元素为0
nums[1] = 0
print("nums:", nums)


# 输出:
# nums: [1, 0, 3]
nums = [1,2,3]
# 修改第二个元素为0
nums[1] = 0
print("nums:", nums)


# 输出:
# nums: [1, 0, 3]

列表删除

Python支持2种删除元素的方式。

1. 使用 del 语句

Python中,可以使用 del语句 删除列表的一个或多个元素

例如

python
nums = [1,2,3,4,5,6,7]
# 删除索引1位置的元素
del nums[1]
print(nums)
# 删除索引-1为的元素(最后一个元素)
del nums[-1]
print(nums)
# 删除索引0-2位置的元素
del nums[0:2]
print(nums)


# 输出:
# [1, 3, 4, 5, 6, 7]
# [1, 3, 4, 5, 6]
# [4, 5, 6]
nums = [1,2,3,4,5,6,7]
# 删除索引1位置的元素
del nums[1]
print(nums)
# 删除索引-1为的元素(最后一个元素)
del nums[-1]
print(nums)
# 删除索引0-2位置的元素
del nums[0:2]
print(nums)


# 输出:
# [1, 3, 4, 5, 6, 7]
# [1, 3, 4, 5, 6]
# [4, 5, 6]

提示

当删除一个范围时,注意范围的结束索引(end)对应的元素是不包含在删除内的。

2. 使用 remove()方法

Python中,可以使用 remove() 方法删除一个列表项

例如

python
langs = ["java", "cpp", "python"]
# 删除元素值
langs.remove("cpp")
print(langs)


# 输出:
# ["java", "python"]
langs = ["java", "cpp", "python"]
# 删除元素值
langs.remove("cpp")
print(langs)


# 输出:
# ["java", "python"]

提示

del 和 remove的区别,前者根据索引位置删除,后者根据元素值删除。

列表方法

Python 内置了非常全面的列表方法。

List 方法清单

方法名描述
append()列表尾部新增元素
extend()列表尾部新增元素序列
insert()指定索引位置插入元素
remove()指定索引位置移除元素
pop()返回并移除指定位置元素
clear()移除列表中所有元素
index()返回首次匹配元素的索引位置
count()列表中指定项的数量
sort()按照升序/降序对列表排序
reverse()翻转列表
copy()返回列表的浅拷贝

列表遍历

Python中,可以使用for循环遍历列表

例如

python
langs = ["java", "cpp", "python"]
for lang in langs:
    print(lang)


# 输出:
# java
# cpp
# python
langs = ["java", "cpp", "python"]
for lang in langs:
    print(lang)


# 输出:
# java
# cpp
# python

列表查找

Python中,可以使用 in 关键字来检查列表中某元素是否存在。

例如

python
langs = ["java", "cpp", "python"]
print("php" in langs)
print("python" in langs)


# 输出:
# False
# True
langs = ["java", "cpp", "python"]
print("php" in langs)
print("python" in langs)


# 输出:
# False
# True

列表长度

Python中,通过 len() 函数返回列表的长度。

例如

python
langs = ["java", "cpp", "python"]
print("列表langs的元素个数:", len(langs))


# 输出:
# 列表langs的元素个数:3
langs = ["java", "cpp", "python"]
print("列表langs的元素个数:", len(langs))


# 输出:
# 列表langs的元素个数:3

列表推导

列表推导是一种创建列表简洁优雅的方式。

例如

python
square = [n**2 for n in range(1,5)]
print(square)


# 输出:
# 1, 4, 9, 16
square = [n**2 for n in range(1,5)]
print(square)


# 输出:
# 1, 4, 9, 16

这里使用了列表推导方式,首先通过range获取到元素序列,对元素执行平方运算,返回平方列表。