在 Python 中,list 是一种有序的、可变的集合,使用方括号 [] 表示。你可以在列表中存储任何数据类型,包括整数、字串、甚至其他列表。Python 提供了许多内建的函数和方法来处理列表。
List 的定义与常用操作:
fruits = [\'apple\', \'banana\', \'cherry\']
# 使用index访问列表中的元素
print(fruits[0]) # \'apple\'
# 使用index修改列表中的元素
fruits[1] = \'blueberry\' # [\'apple\', \'blueberry\', \'cherry\']
# 在列表末尾添加元素
fruits.append(\'mango\') # [\'apple\', \'blueberry\', \'cherry\',\'mango\']
# 删除列表中的元素
fruits.remove(\'apple\') # [\'blueberry\', \'cherry\',\'orange\']
# 获取列表的长度
print(len(fruits)) # 3
其他常用的 List 函数和方法:
fruits = [\'apple\', \'banana\', \'cherry\']
append(x) | 在列表末尾添加元素 x | fruits.append(\'mango\') # [\'apple\', \'blueberry\', \'cherry\',\'mango\'] |
insert(i, x) | 在索引 i 处插入元素 x | fruits.insert(1, \'grape\') #[\'apple\', \'grape\',\'banana\', \'cherry\'] |
remove(x) | 删除列表中的第一个值为 x 的元素 | fruits.remove(\'apple\') #[\'grape\',\'banana\', \'cherry\'] |
pop([i]) | 移除并返回列表中索引为 i 的元素(默认为最后一个元素) | fruits.pop(2) #[\'apple\', \'banana\'] |
sort() | 就地排序列表中的元素 | fruits.sort() #[\'apple\', \'banana\', \'cherry\'] |
reverse() | 将列表中的元素反转 | fruits.reverse() #[\'cherry\',\'banana\',\'apple\'] |
extend(iter) | 使用一个可迭代对象扩展列表 | fruits.extend([\'kiwi\', \'peach\']) #[\'apple\', \'banana\', \'cherry\',\'kiwi\', \'peach\'] |
index(x) | 返回列表中找到的第一个值为 x 的元素的索引 | fruits.index(\'banana\')#2 |
count(x) | 返回列表中值为 x 的元素个数 | fruits.count(\'apple\') #1 |
clear() | 清空列表中的所有元素 | fruits.clear() #[] |
copy() | 返回列表的一个浅拷贝 | new_fruits = fruits.copy() #[\'apple\', \'banana\', \'cherry\'] |
len(list) | 返回列表的长度 | len(fruits) #3 |
列表的进阶操作:
List Comprehension 快速生成列表
Before 一般列表生成式:
number =[]
for i input().split():
nums.append(int(i))
After 快速列表生成式:
nums =[int(i) for i in inpiut().split()]
List Comprehension 快速生成列表基本上有三个元素: 运算式 ,for loop, if条件判断(options)
语法解说:遍例输入内容转换为整数并加入到新的列表int_list = [int(i) for i in input().split()]这段代码的功能说明:input().split()input() 从使用者获取输入,通常输入一行内容。split() 将这行内容按空格分割成一系列子字串,并返回一个包含这些子字串的列表。例如,假设使用者输入 "1 2 3 4",那么 input().split() 会得到列表 ["1", "2", "3", "4"]。
int(i) for i in input().split()列表生成式这里的列表生成式遍历 input().split() 返回的每一个子字串 i,并将它转换为整数 int(i)。每个转换的结果会加入到新的列表中。这样,就可以得到一个包含整数的列表。
将结果存入 int_list 最终,所有转换完成的整数会组成一个列表,并赋值给 int_list。如果用户输入的是 "1 2 3 4",则 int_list 的值将是 [1, 2, 3, 4]。
- 其他范例语法:
#一般列表生成式
squares = []
for i in range(5):
if i % 2 == 1:
squares.append(i ** 2)
#快速列表生成式
squares = [i ** 2 for i in range(5) if i % 2 ==1]
print(squares) # [0, 1, 4, 9, 16]
-
squares =:将生成的列表赋值给变数 squares。
-
range(5):range(5) 是一个 Python 内建函数,会生成一个从 0 到 4 的整数序列,即 [0, 1, 2, 3, 4]。这段程式码中,range(5) 生成了五个数字:0, 1, 2, 3, 4,并将每个数依序赋值给变数 i。
-
i ** 2 for i in range(5):这是列表生成式的核心部分。它会遍历 range(5) 中的每一个数字 i,对每个 i 执行平方操作 (i**2),然后将结果添加到新的列表中。
-
if i % 2 == 1 :这是一个条件判断,只有当 i 除以 2 的余数为 1 (也就是说,i 是奇数) 时,才会将 i 的平方加入到新的列表中。
List切片操作:index范围取值
sub_list = fruits[1:3] # 返回第1到第3个元素,不包括第3个
List列表与其他数据类型转换
将字符串转换为列表
chars = list("hello") # [\'h\', \'e\', \'l\', \'l\', \'o\']
将列表转换为字符串
string = \',\'.join([\'a\', \'b\', \'c\']) # \'a,b,c\'
enumerate 同时获取元素的索引和值
enumerate() 是一个内建函数,用于在迭代列表或其他可迭代对象时,同时获取元素的索引和值。这在需要同时知道元素位置和内容时非常有用,且让代码更简洁。
students = ["Alice", "Bob", "Charlie"]
for index, student in enumerate(students):
print(f"{index}: {student}")
#0: Alice
1: Bob
2: Charlie
enumerate() 的工作方式:enumerate() 会将每个元素与其索引一起返回,这样我们就可以轻鬆获取每个元素的索引和内容。例如:
- index 是当前元素的索引
- student 是当前索引对应的值
使用 start 参数如果希望索引从 1 开始而不是 0,可以设置 start=1:
for index, student in enumerate(students, start=1):
print(f"{index}: {student}")
#1: Alice
2: Bob
3: Charlie
enumerate() 与列表生成式
enumerate() 也可以和列表生成式一起使用,快速生成新列表。例如,对每个元素进行操作并生成包含其索引的描述:
students_with_index = [f"{index}: {student}" for index, student in enumerate(students)]
print(students_with_index)
#[\'0: Alice\', \'1: Bob\', \'2: Charlie\']
重要观念:
对象类型 | 不可变对象(如 int, float, str, tuple) | 可变对象(如 list, dict, set) |
复制的内容 | 复制变数的值,即新的变数和原变数值独立 | 复制对象的引用,新的变数和原变数指向相同的内存地址 |
修改是否影响原变数 | 不会影响原变数 | 修改新变数会影响原变数 |
范例 | x = 10y = xy = 20不会影响 x 的值 | a = [1, 2, 3]b = ab.append(4)会影响 a 的值 |
用法场景 | 适用于不变的数据,如数字、字串等 | 适用于需修改的数据,如列表、字典等 |