在 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\']

重要观念:

项目
值传递(Copy by Value)
引用传递(Copy by Reference)
对象类型 不可变对象(如 int, float, str, tuple) 可变对象(如 list, dict, set)
复制的内容 复制变数的值,即新的变数和原变数值独立 复制对象的引用,新的变数和原变数指向相同的内存地址
修改是否影响原变数 不会影响原变数 修改新变数会影响原变数
范例 x = 10y = xy = 20不会影响 x 的值 a = [1, 2, 3]b = ab.append(4)会影响 a 的值
用法场景 适用于不变的数据,如数字、字串等 适用于需修改的数据,如列表、字典等