python学习——列表的相关操作

在 Python 中,列表(list)是一种非常灵活的数据结构,可以用来存储一系列的元素。以下是列表的一些常见操作:

创建列表

my_list = [1, 2, 3, 4, 5]

访问元素

  • 通过索引访问:
first_element = my_list[0]  # 第一个元素
last_element = my_list[-1]  # 最后一个元素

修改元素

  • 直接通过索引修改:
my_list[0] = 10

列表切片

  • 获取列表的一部分:
sub_list = my_list[1:4]  # 包含索引1到3的元素,不包含索引4

添加元素

  • 在末尾添加一个元素:
my_list.append(6)
  • 在指定位置插入一个元素:
my_list.insert(1, 7)  # 在索引1的位置插入7
  • 扩展列表,将一个列表的所有元素添加到另一个列表末尾:
my_list.extend([8, 9, 10])

删除元素

  • 删除指定位置的元素:
del my_list[0]
  • 移除列表中第一个匹配的元素:
my_list.remove(3)
  • 弹出列表末尾的元素:
last_element = my_list.pop()

列表推导式

  • 快速生成列表:
squared = [x**2 for x in my_list]

其他操作

  • 获取列表长度:
length = len(my_list)
  • 列表排序:
my_list.sort()  # 默认升序
my_list.sort(reverse=True)  # 降序
  • 反转列表:
my_list.reverse()
  • 复制列表:
my_list_copy = my_list.copy()
  • 列表相加:
combined_list = my_list + [11, 12, 13]
  • 检查元素是否在列表中:
is_in_list = 5 in my_list
  • 计算元素在列表中出现的次数:
count = my_list.count(2)

这些操作涵盖了列表的大部分常用功能。列表在 Python 编程中非常常用,因此理解这些操作非常重要。

pop

在 Python 中,pop() 是列表(list)的一个内置方法,用于移除列表中的一个元素(默认是最后一个元素),并且返回该元素的值。
以下是 pop() 方法的一些关键点:

基本用法
  • 移除并返回列表中的最后一个元素:
my_list = [1, 2, 3, 4, 5]
last_element = my_list.pop()  # 返回 5,my_list 现在是 [1, 2, 3, 4]
指定索引
  • pop() 方法还可以接受一个整数参数,该参数指定要移除元素的索引:
second_element = my_list.pop(1)  # 返回 2,my_list 现在是 [1, 3, 4]

如果提供的索引超出了列表的范围,Python 将引发一个 IndexError

使用场景
  • 当你需要从列表中删除一个元素,并且还需要使用该元素时。
  • 当你需要实现一个基于列表的栈(stack)时,pop() 方法非常适合用来移除栈顶元素。
示例

下面是一个使用 pop() 方法的完整示例:

# 定义一个列表
my_list = ['a', 'b', 'c', 'd']
# 移除并返回最后一个元素
popped_element = my_list.pop()
print(f"移除的元素是:{popped_element}")  # 输出: 移除的元素是:d
print(f"列表现在是:{my_list}")  # 输出: 列表现在是:['a', 'b', 'c']
# 移除并返回指定索引的元素
popped_element = my_list.pop(1)
print(f"移除的元素是:{popped_element}")  # 输出: 移除的元素是:b
print(f"列表现在是:{my_list}")  # 输出: 列表现在是:['a', 'c']

在使用 pop() 方法时,需要注意,如果列表为空,即没有任何元素,调用 pop() 将会引发 IndexError。如果不想在空列表上调用 pop() 时引发错误,可以提供一个默认值作为 pop() 的第二个参数,这样在列表为空时将返回这个默认值。这个特性是在 Python 3.9 中引入的。例如:

empty_list = []
element = empty_list.pop(0, '默认值')  # 返回 '默认值'

列表的排序

在 Python 中,列表(list)提供了多种排序方法,可以按照不同的标准对列表中的元素进行排序。以下是一些常用的列表排序方法:

list.sort() 方法

sort() 方法是对列表本身进行排序,即它会改变原列表的顺序。

  • 基本排序:
my_list = [3, 1, 4, 1, 5, 9]
my_list.sort()
print(my_list)  # 输出: [1, 1, 3, 4, 5, 9]
  • 降序排序:
my_list.sort(reverse=True)
print(my_list)  # 输出: [9, 5, 4, 3, 1, 1]
  • 使用 key 参数进行自定义排序:
my_list = ['apple', 'banana', 'cherry', 'date']
my_list.sort(key=len)
print(my_list)  # 输出: ['date', 'apple', 'banana', 'cherry']
sorted() 函数

sorted() 函数返回一个新的列表,包含所有排序后的元素,原列表保持不变。

  • 基本排序:
my_list = [3, 1, 4, 1, 5, 9]
sorted_list = sorted(my_list)
print(sorted_list)  # 输出: [1, 1, 3, 4, 5, 9]
  • 降序排序:
sorted_list = sorted(my_list, reverse=True)
print(sorted_list)  # 输出: [9, 5, 4, 3, 1, 1]
  • 使用 key 参数进行自定义排序:
my_list = ['apple', 'banana', 'cherry', 'date']
sorted_list = sorted(my_list, key=len)
print(sorted_list)  # 输出: ['date', 'apple', 'banana', 'cherry']
自定义排序规则

如果需要更复杂的排序规则,可以传递一个自定义的函数给 key 参数:

# 假设有一个包含元组的列表,元组包含姓名和年龄
people = [('Alice', 30), ('Bob', 25), ('Cindy', 35)]
# 按年龄排序
people.sort(key=lambda person: person[1])
print(people)  # 输出: [('Bob', 25), ('Alice', 30), ('Cindy', 35)]

在使用排序方法时,需要注意以下几点:

  • sort() 方法没有返回值,它直接在原列表上进行排序。
  • sorted() 函数返回一个新的列表,原列表不受影响。
  • 排序默认是升序,可以通过设置 reverse=True 来实现降序排序。
  • key 参数接受一个函数,该函数用于指定排序的依据。
  • 对于不可比较的元素(如不同类型的元素混合在一起),直接排序可能会引发 TypeError

实操

lst = ['hello', 'world', 'python']
print('原列表:', lst, id(lst)) # id能输出内存地址
# 增加元素的操作
lst.append('sql')
print('增加元素之后:', lst, id(lst)) # 内存地址不变

# 使用insert(index, x)在指定的index位置插入元素x
lst.insert(1, 100)
print(lst)

# 列表元素的删除操作
lst.remove('world')
print(lst)

# pop(index)根据索引将元素取出,然后再删除
print(lst.pop(1))
print(lst)

# 清楚列表中所以的元素——clear()
# lst.clear() ctrl+?全部注释
# print(lst, id(lst))

# 列表的反向输出
lst.reverse() # 不会产生新的列表,是再原列表的基础上进行的
print(lst)

# 列表的拷贝,将产生一个新列表
new_lst = lst.copy()
print(lst, id(lst))
print(new_lst, id(new_lst)) # 新的id

# 列表元素的修改操作
lst[1] = 'mysql'
print(lst)


.sort
lst = [4, 56, 3, 78, 40, 56, 89]
print('原列表:', lst)

# 排序,默认升序
lst.sort()
print('升序:', lst) # 在原列表的基础上排序,不会产生新列表

lst.sort(reverse=True)
print('降序:', lst)

# 字母排序
lst2 = ['banana', 'apple', 'Cat']
print('原列表:', lst2)
# 升序排序,先排大写在小写ascll码
lst2.sort()
print('升序:',lst2)

lst2.sort(reverse=True)
print('降序:', lst2)

# 自定义排序规则,忽略大小写比较
lst2.sort(key=str.lower)
sorted()
lst = [4, 56, 3, 78, 40, 56, 89]
print('原列表:', lst)

# 排序 产生新列表,不会对原列表进行排序操作
asc_lst = sorted(lst)
print('升序:', asc_lst)
print('原列表:', lst)

# 降序
desc_lst = sorted(lst, reverse=True)
print('降序:', desc_lst)
print('原列表:', lst)

# 字母排序
lst2 = ['banana', 'apple', 'Cat']
print('原列表:', lst2)

# 忽略大小写进行排序
new_lst2 = sorted(lst2, key=str.lower)
print('原列表:', lst2)
print('排序后的列表:', new_lst2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qhumaing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值